I notice that avrdude erases the chip before programming it. If you make a mistake (the one I made was to mis-type the command to read fuse settings), it will erase the chip, then fail to open the programming file (that I mis-specified as mentioned).

It would be nice if it validated the input first, for example, by trying to open the specified file first, then proceeding to erase before programming. Stuff like that.