metaclass (metaclass) wrote,
metaclass
metaclass

Почему я не люблю логику на исключениях

Один жабист утверждает что исключения надо ловить и обрабатывать, а не дать им нахрен свалится в корень вызова и пусть тот, кто вызывает, разбирается. Ну в жабе по другому сложнее, это понятно.
Но я не люблю обрабатывать исключения самостоятельно, за исключением "вывел в лог с данными приведшими к исключению и кинул дальше".
Потому что в таком случае баги становятся расходящимися. Хороший баг - это когда ВСЕ СДОХЛО, КОРОВЫ, ЗАБОРНИКИ, СТЕКТРЕЙС, МЯСО КРОВЬ КИШКИ. Умирает от входа. Сразу видно, где что надо исправлять.
А плохой баг: это когда он был, но мы его не видели, иначе как чтением логов каждый день за чаем. А хуже того - если мы исключение от него перехватили и пошли работать дальше, а в состоянии программы уже поселилось маленькое скрытое червие которое потом дальше где-нибудь приведет к еще худшим, уже непонятным ошибкам. Впрочем, такое редко бывает, если корректно работать - транзакции там при ошибках откатывать, внешние ресурсы закрывать в finally и вообще возвращаться в корректное состояние.
Но лучше все-таки вернутся в корректное состояние в finally, отписаться в лог в catch и бросить исключение дальше - пусть главный цикл оконных сообщений или там веб-сервер разбирается, у него голова больше.
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 26 comments