Бөлісу құралы:


CA2219: не создавайте исключения в предложениях исключений

Свойство Значение
Идентификатор правила CA2219
Заголовок Исключения не должны вызываться в блоках обработки исключений
Категория Использование
Исправление является критическим или не критическим Неразрывный, Разрывный
Включен по умолчанию в .NET 10 Как предложение
Применимые языки C# и Visual Basic

Причина

Исключение создается из предложения finally, filter или fault.

Описание правила

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

Когда исключение возникает в предложении finally или "fault", новое исключение скрывает активное исключение, если оно имеется. Из-за этого становится трудно обнаружить и отладить изначальную ошибку.

При возникновении исключения в предложении filter среда выполнения автоматически перехватывает исключение, в результате фильтр возвращает значение false. Не существует способа определить разницу между фильтром, возвращающим значение false, и исключением, вызываемым из фильтра. Это затрудняет обнаружение и отладку ошибок в логике фильтра.

Устранение нарушений

Чтобы устранить это нарушение правила, не вызывайте исключение явным образом из блока кода finally, filter или fault.

Example

try
{
    // ...
}
finally
{
    // This code violates the rule.
    throw new Exception();
}

Когда лучше отключить предупреждения

Для этого правила отключать вывод предупреждений не следует. Не существует сценариев, в которых исключение, возникающее в предложении исключения, предоставляет преимущество для исполняемого кода.

CA1065: не вызывайте исключения в непредвиденных местах

См. также