Я считаю, что лучше всего обрабатывать исключения в последний ответственный момент. Это обычно означает на уровне пользовательского интерфейса (то есть контроллер в приложении MVC или в коде в традиционном приложении asp.net). Именно на этом высоком уровне ваш код «знает», что спрашивает пользователь, и что нужно сделать, если что-то не работает.
Обработка исключений внизу стека вызовов обычно приводит к тому, что вызывающий код не может должным образом обрабатывать исключительные ситуации.
На вашем уровне данных вы будете использовать стандартные шаблоны (например, оператор using
для таких идентификаторов, как SqlConnection), могут возникнуть исключения из документов, которые вы знаете (не не делать это из-за нехватки памяти или других редких случаев), а затем позволить им течь вверх по стеку вызовов, когда они это делают. Самое большее, вы можете захотеть перехватить эти исключения и обернуть их в один тип исключений, в тех случаях, когда МНОГИЕ исключения могут быть обработаны вызывающими.
Если вам нужно «очистить» вещи перед тем, как пропустить исключения, вы всегда можете использовать finally
блок для очистки. Вам не нужно catch
, чтобы использовать блок finally
.
Я не знаю ни одного примера небольших веб-сайтов, которые предназначены для выделения правильной обработки исключений, извините.