Авария не самая страшная вещь, которая может случиться.
Я читал о старой программе сжатия файлов Unix (вы знаете, как Zip), которая не проверяла возвращаемое значение из fclose. Да, fclose может вернуть ошибку. Вывод в файл обычно буферизуется, поэтому, даже если вызов fwrite или putc кажется работающим и возвращает OK, данные все еще могут находиться в буфере, ожидая записи. Когда вызывается fclose, все неписанные данные сбрасываются, и это может привести к сбою, так как (например) диск может быть заполнен. А поскольку программа сжатия обычно запускалась только , поскольку диск был почти заполнен, это происходило довольно часто. Таким образом, программа молча усекла новый сжатый файл, оригинальный несжатый файл был удален, и в следующем году или около того, когда кто-то пытался распаковать файл, конец отсутствовал!
Я думаю, что это хороший пример того, почему выбрасывание исключений может быть хорошей вещью.