Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
| Свойство | Значение |
|---|---|
| Идентификатор правила | 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: не вызывайте исключения в непредвиденных местах