Поделиться через


Исключения должны быть открытыми

Обновлен: Ноябрь 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.

Отключение предупреждений

Предупреждения этого правила следует отключать только в случае, если вы уверены, что все классы закрытого исключения будут перехвачены в пределах его внутренней области.

Пример

Ниже показано три примера, нарушающих это правило.