Я не понимаю, когда использовать ApplicationException .На странице указано
Служит базовым классом для исключений, определенных приложением.
, а на этой же странице появляется следующее предупреждение
Вы должны получать пользовательские исключения из класса Exception, а не из класса ApplicationException.Вы не должны вызывать исключение ApplicationException в своем коде, и вы не должны перехватывать исключение ApplicationException, если только вы не собираетесь повторно генерировать исходное исключение.
Таким образом, оно должно служить базовым классом для определенного приложенияисключения, но оно не должно быть ни получено, ни поймано.К сожалению, в предупреждении не содержится дальнейших рассуждений.
В нашем приложении мы хотим отлавливать все определенные приложением исключения и обрабатывать их иначе, чем исключения из самого .net.Следовательно, мы ловим общее исключение, из которого происходят все определенные приложением исключения.
Поэтому вместо выполнения
catch(AppCustomException ex) { ... }
catch(AnotherAppCustomException ex) { ... }
catch(YetAnotherAppCustomException ex) { ... }
мы имеем
catch(BaseCustomException ex) { ... } //All app custom exceptions derive from this type
Я думал, что это будетхорошо, если в этом примере в качестве основы для всех определенных пользователем исключений определено исключение ApplicationException вместо BaseCustomException
.
Коллега утверждал, что мы не можем использовать ApplicationException для этого общего базового типа исключения из-за того, что указано в MSDN,В частности, это не должно быть получено, или поймано, когда не повторено.Мы не отказываемся от этих исключений по какой-то причине.
Так что я сейчас растерялся.Какова цель ApplicationException на самом деле?