Я бы хотел использовать ELMAH для обработки исключений, что в значительной степени является понятием «пусть происходят исключения». ELMAH позаботится о том, чтобы регистрировать их, и вы даже можете настроить его на отправку электронной почты, когда исключения для определенного проекта достигают или превышают определенный порог. В моем отделе мы остаемся как можно дальше от блоков try / catch. Если что-то не так в приложении, мы хотим сразу узнать, в чем проблема, чтобы исправить ее, вместо того, чтобы подавлять исключение и обрабатывать его в коде.
Если происходит исключение, это означает, что что-то не так. Идея состоит в том, чтобы заставить ваше приложение делать только то, что должно. Если он делает что-то другое и вызывает исключения, ваш ответ должен состоять в том, чтобы установить причину, по которой это происходит, а не в том, чтобы это происходило, и обрабатывать это в коде. Это просто моя / наша философия, и это не для всех. Но все мы слишком часто горели из-за того, что приложение «по какой-то причине» съело исключение, и никто не знает, что что-то не так.
И никогда, никогда, никогда не ловите общее исключение. Всегда, всегда, всегда перехватывайте самое конкретное исключение, так что если выдается исключение, но это не тот тип, который вы ожидаете, опять же, вы будете знать, потому что приложение аварийно завершится. Если вы просто перехватываете (Exception e), то независимо от того, какой тип исключения выдается, ваш блок catch теперь будет отвечать за реагирование на каждый тип исключения, который может быть сгенерирован. А если это не так, то вы сталкиваетесь с целым «едящим» исключением, когда что-то идет не так, но вы никогда не узнаете, пока не станет слишком поздно.