CA2219: Ne emelj kivételeket a kivételkikötésekben

Tulajdonság Érték
Szabályazonosító CA2219
Cím Ne emeljenek kivételt a kivételkikötésekben
Kategória Használat
A javítás romboló vagy nem romboló Nem törő, megszakítás
Alapértelmezés szerint engedélyezve a .NET 10-ben Javaslatként
Alkalmazandó nyelvek C# és Visual Basic

Ok

Kivételt vált ki egy finally szűrő vagy hiba záradék.

Szabály leírása

Ha kivételt emelnek ki egy kivételkikötésben, az jelentősen növeli a hibakeresés nehézségét.

Ha a finally vagy hibazáradékban kivétel keletkezik, az új kivétel elrejti az aktív kivételt, ha van ilyen. Ez megnehezíti az eredeti hiba észlelését és hibakeresését.

Ha egy szűrőzáradék kivételt hoz létre, a futtatókörnyezet észrevétlenül elkapja a kivételt, és a szűrő hamisra értékelődik ki. Nem lehet megállapítani a különbséget a hamisnak kiértékelt szűrő és a szűrőből származó kivétel között. Ez megnehezíti a szűrő logikájában előforduló hibák észlelését és hibakeresését.

Szabálysértések kijavítása

A szabály megsértésének kijavításához ne indítson el kivételt egy finally szűrőből vagy hibakezelési záradékból.

Example

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

Mikor kell letiltani a figyelmeztetéseket?

Ne nyomja el a szabályra vonatkozó figyelmeztetést. Nincsenek olyan forgatókönyvek, amelyek esetén egy kivételkikötésben felvetett kivétel előnyt biztosít a végrehajtó kód számára.

CA1065: Ne emeljen kivételeket váratlan helyeken

Lásd még