Исключения должны быть открытыми
Обновлен: Ноябрь 2007
TypeName |
ExceptionsShouldBePublic |
CheckId |
CA1064 |
Категория |
Microsoft.Design |
Критическое изменение |
Не критическое |
Причина
Исключение, не являющееся открытым, происходит непосредственно от System.Exception, System.SystemException или System.ApplicationException.
Описание правила
Внутренне исключение видно только внутри своей внутренней области. После выхода исключения за пределы внутренней области для перехвата исключения можно использовать только базовое исключение. Если внутренне исключение унаследовано от T:System.Exception, T:System.SystemException или T:System.ApplicationException, внешний код не имеет достаточных данных для обработки исключения.
Однако если код содержит открытое исключение, которое затем используется в качестве базового для внутреннего исключения, будет разумно предположить, что код сможет правильно обработать базовое исключение. Открытое исключение будет иметь больше данных, чем предоставляется в T:System.Exception, T:System.SystemException или T:System.ApplicationException.
Устранение нарушений
Сделайте исключение открытым или сделайте внутреннее исключение производным от открытого исключения, отличного от System.Exception, System.SystemException и System.ApplicationException.
Отключение предупреждений
Предупреждения этого правила следует отключать только в случае, если вы уверены, что все классы закрытого исключения будут перехвачены в пределах его внутренней области.
Пример
Ниже показано три примера, нарушающих это правило.