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

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

Причина

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

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

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

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

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

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

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

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

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

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

См. также