CA2219: не создавайте исключения в предложениях исключений
Свойство | Значение |
---|---|
Идентификатор правила | CA2219 |
Заголовок | В предложениях с исключениями не должны порождаться исключения |
Категория | Использование |
Исправление является критическим или не критическим | Некритическое, критическое |
Включен по умолчанию в .NET 9 | Как предложение |
Причина
Исключение создается из предложения finally
, filter или fault.
Описание правила
Когда в предложении исключения возникает исключение, это значительно усложняет отладку.
Если исключение создается в предложении finally
или fault, новое исключение скрывает активное исключение при его наличии. Из-за этого становится трудно обнаружить и отладить изначальную ошибку.
При возникновении исключения в предложении filter среда выполнения автоматически перехватывает исключение, в результате фильтр возвращает значение false. Не существует способа определить разницу между фильтром, возвращающим значение false, и исключением, вызываемым из фильтра. Это затрудняет обнаружение и отладку ошибок в логике фильтра.
Устранение нарушений
Чтобы устранить нарушение для этого правила, не вызывайте исключение явным образом из предложения finally
, filter или fault.
Когда лучше отключить предупреждения
Для этого правила отключать вывод предупреждений не следует. Не существует сценариев, в которых исключение, возникающее в предложении исключения, предоставляет преимущество для исполняемого кода.
Связанные правила
CA1065: не вызывайте исключения в непредвиденных местах