CA2201: не вызывайте зарезервированные типы исключений
TypeName |
DoNotRaiseReservedExceptionTypes |
CheckId |
CA2201 |
Категория |
Microsoft.Usage |
Критическое изменение |
Критическое изменение |
Причина
Метод создает исключение слишком общего типа или типа, зарезервированного средой выполнения.
Описание правила
Указанные ниже типы исключений являются слишком общими, чтобы предоставлять пользователям исчерпывающую информацию.
Указанные ниже типы исключений являются зарезервированными и должны создаваться только средой CLR.
Не создавайте общих исключений
Создание в библиотеке или платформе исключения общего типа, такого как Exception или SystemException, вынуждает объекты-получатели перехватывать все исключения, в том числе неизвестные, способ обработки которых им не известен.
Вместо этого следует вызывать исключения производного типа, уже существующего в платформе, или создать собственный тип, производный от Exception.
Создание конкретных исключений
В представленной ниже таблице показаны параметры и исключения, которые следует вызывать при проверке параметров, в том числе параметры значения в методе установки свойства:
Описание параметра |
Исключение |
---|---|
Ссылка null |
|
Выход за пределы диапазона допустимых значений (например, индекса коллекции или списка) |
|
Недопустимое значение enum |
|
Содержит формат, который не соответствует спецификациям параметров метода (например, строке формата для метода ToString(String)) |
|
Другие случаи недопустимых значений |
Если операция является недопустимой для текущего состояния объекта, создавайте исключение InvalidOperationException
Если операция выполняется для удаленного объекта, создавайте исключение ObjectDisposedException
Если операция не поддерживается (как, например, переопределенный метод Stream.Write в потоке, открытом для чтения), создавайте исключение NotSupportedException
Если преобразование приводит к переполнению (как, например, в явной перегрузке оператора приведения), создавайте исключение OverflowException
В других случаях рассмотрите возможность создания собственного типа, производного от Exception, и создавайте исключения этого типа.
Устранение нарушений
Чтобы устранить нарушение данного правила, замените тип создаваемых исключений на более конкретный тип, не зарезервированный в среде выполнения.
Отключение предупреждений
Для этого правила отключать вывод предупреждений не следует.