Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
| 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 powodująca niezgodność lub niezgodność | Niezgodność, niezgodność |
| Domyślnie włączone na platformie .NET 10 | Jako sugestia |
Przyczyna
Wyjątek jest zgłaszany z klauzuli finally, filtru lub błędu.
Opis reguły
Gdy wyjątek jest zgłaszany w klauzuli wyjątku, znacznie zwiększa trudności z debugowaniem.
Gdy wyjątek jest zgłaszany w klauzuli finally lub błędu, nowy wyjątek ukrywa aktywny wyjątek, jeśli istnieje. 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 ocenianym jako fałsz a zgłaszanym wyjątkiem z filtru. 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 finallyklauzuli , filtru lub błędu.
Example
try
{
// ...
}
finally
{
// This code violates the rule.
throw new Exception();
}
Kiedy pomijać ostrzeżenia
Nie pomijaj 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.
Powiązane reguły
CA1065: Nie zgłaszaj wyjątków w nieoczekiwanych lokalizacjach