Я могу думать только о двух видах случаев, когда я проглатывал исключения.
При закрытии файлов или подключений к базе данных. Если я получу ошибку при закрытии, что я буду с этим делать? Я полагаю, мне действительно следует написать какое-то сообщение об ошибке, но если я уже успешно прочитал данные, это кажется излишним. Это также кажется очень необычным случаем.
Более оправдано: внутренняя обработка ошибок. Если я не смогу записать в файл журнала, куда я собираюсь написать ошибку, которая говорит о том, что я не могу написать ошибку? В некоторых случаях вы можете попытаться записать на экран, но в зависимости от приложения это может быть невозможно, например, фоновая работа без экрана; или просто запутать пользователя, который все равно ничего не сможет сделать с ошибкой.
В другом плакате упоминаются случаи, когда вы знаете, что исключение невозможно или, по крайней мере, для того, чтобы оно произошло, должны возникнуть серьезные проблемы с вашим компилятором или операционной средой, как если бы он не складывал два числа вместе правильно, в котором Случай, кто говорит, что исключение имеет смысл?
От всего сердца согласен с тем, что в тех редких случаях, когда это законно, вы должны включить комментарий, объясняющий, почему исключение не имеет значения или невозможно. Но тогда я бы сказал, что всякий раз, когда вы пишете код, который может быть загадочным, вы должны добавить пояснительный комментарий.
Примечание: почему программисты обычно включают комментарии типа "x = x + 1; // добавляем 1 к x", как, да, я бы никогда не вычеркнул это без комментария, но потом добавил бы действительно загадочный код без объяснения?
Приложение через четыре года после моего первоначального поста
Конечно, НАСТОЯЩАЯ причина, почему даже хорошие программисты иногда проглатывают исключения: «Я пытаюсь заставить работать базовую логику, я не уверен, что делать, если это исключение случится, я не хочу связываться с это прямо сейчас, у меня слишком много проблем с нормальным логическим потоком, но я вернусь к этому позже ". И тогда они забывают вернуться к этому.
Кстати, плохая причина, о которой я слышал от нескольких людей, которых я обычно считаю довольно хорошими программистами, такова: «Я не хочу показывать пользователю загадочное сообщение об ошибке. Это просто смутило бы его. Лучше молча проглотить» Ошибка." Это плохая причина, потому что, (а) Вы все еще можете записать что-то в файл журнала. И (b) действительно ли загадочное сообщение об ошибке хуже, чем создание у пользователя впечатления о том, что операция прошла успешно, если этого не произошло? Теперь клиент думает, что его заказ обрабатывается, когда он на самом деле не выполняется, или он думает, что скорая помощь отправляется, чтобы помочь его ребенку, который кричит в агонии, но на самом деле сообщение никогда не проходило и т. Д. Даже в самых тривиальных случаях , откровенного сообщения на форуме не произошло, или что-то подобное, я бы предпочел получить загадочное сообщение, которое, по крайней мере, дает мне идею, что что-то пошло не так, и если мне все равно, я должен попробовать еще раз или позвонить кому-нибудь, тогда просто скажите " обновление завершено ", когда это действительно не так.