Dela via


CA2219: Skapa inte undantag i undantagssatser

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.

CA1065: Skapa inte undantag på oväntade platser

Se även