Udostępnij za pośrednictwem


CA2219: Nie zgłaszaj wyjątków w klauzulach wyjątków

Właściwości Wartość
Identyfikator reguły CA2219
Tytuł Nie zgłaszaj wyjątków w klauzulach wyjątków
Kategoria Użycie
Poprawka łamiąca lub nienaruszająca Nierozdzielający, łamliwy
Domyślnie włączone na platformie .NET 10 Jako sugestia
Zastosowane języki C# i Visual Basic

Przyczyna

Wyjątek jest zgłaszany z klauzuli finally, klauzuli filtru lub klauzuli błędu.

Opis reguły

Gdy wyjątek jest zgłaszany w klauzuli wyjątku, znacznie zwiększa trudność debugowania.

Gdy wyjątek jest zgłaszany w klauzuli finally lub klauzuli błędu, nowy wyjątek ukrywa aktywny wyjątek, jeśli jest obecny. Sprawia to, że oryginalny błąd jest trudny do wykrycia i debugowania.

Gdy wyjątek jest zgłaszany w klauzuli filtru, środowisko uruchomieniowe dyskretnie przechwytuje wyjątek i powoduje, że filtr ma wartość false. Nie ma sposobu, aby określić różnicę między filtrem zwracającym wartość false a zgłaszanym wyjątkiem przez filtr. Utrudnia to wykrywanie i debugowanie błędów w logice filtru.

Jak naprawić naruszenia

Aby naprawić to naruszenie tej reguły, nie należy jawnie zgłaszać wyjątku z klauzuli finally, filtru lub klauzuli błędów.

Example

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

Kiedy pomijać ostrzeżenia

Nie ignoruj ostrzeżenia dla tej reguły. Nie ma scenariuszy, w których wyjątek zgłoszony w klauzuli wyjątku zapewnia korzyść dla kodu wykonawczego.

CA1065: Nie zgłaszaj wyjątków w nieoczekiwanych lokalizacjach

Zobacz też