Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
| Egenskap | Värde |
|---|---|
| Regel-ID | CA2219 |
| Title | Skapa inte undantag i undantagssatser |
| Kategori | Användning |
| Korrigeringen är antingen invasiv eller icke-invasiv | Icke-brytande, Brytande |
| Aktiverad som standard i .NET 10 | Som förslag |
| Tillämpliga språk | C# och Visual Basic |
Orsak
Ett undantag genereras från en finally, filter- eller felsats.
Regelbeskrivning
När ett undantag utlöses i en undantagsklausul ökar det avsevärt felsökningssvårigheterna.
När ett undantag hanteras i en finally felklausul döljer det nya undantaget det aktiva undantaget, om det finns. Detta gör det ursprungliga felet svårt att identifiera och felsöka.
När ett undantag utlöses i en filterklad, fångar körtiden undantaget utan att visa det och gör så att filtert utvärderas till falskt. Det finns inget sätt att se skillnaden mellan när filtret utvärderas till falskt och när ett undantag kastas från ett filter. Detta gör det svårt att identifiera och felsöka fel i filtrets logik.
Så här åtgärdar du överträdelser
Åtgärda denna överträdelse av den här regeln genom att inte uttryckligen skapa ett undantag från en finally, filter- eller felklausul.
Example
try
{
// ...
}
finally
{
// This code violates the rule.
throw new Exception();
}
När du ska ignorera varningar
Ignorera inte en varning för den här regeln. Det finns inga scenarier där ett undantag som genereras i en undantagsklausul ger en fördel för den körbara koden.
Relaterade regler
CA1065: Skapa inte undantag på oväntade platser