Upozornění CA2200: Obnovení kvůli zachování podrobností zásobníku
Pravidlo analyzátoru kódu .NET CA2200 je ve výchozím nastavení povolené od verze .NET 5. Vygeneruje upozornění sestavení pro všechny catch
bloky, které znovu zvětšují výjimku, a výjimka je explicitně zadána throw
v příkazu.
Změna popisu
Počínaje rozhraním .NET 5 obsahuje sada .NET SDK analyzátory zdrojového kódu .NET. Ve výchozím nastavení je povoleno několik z těchto pravidel, včetně CA2200. Pokud váš projekt obsahuje kód, který porušuje toto pravidlo a je nakonfigurovaný tak, aby zacházel s upozorněními jako s chybami, může tato změna přerušit sestavení.
Pravidlo CA2200 označuje kód, kde se výjimky opakují a proměnná výjimky je zadána throw
v příkazu. Při vyvolání výjimky je součástí informací, které přenáší, trasování zásobníku. Trasování zásobníku je seznam hierarchie volání metody, která začíná metodou, která vyvolá výjimku a končí metodou, která zachytí výjimku. Pokud se výjimka opakuje zadáním výjimky v throw
příkazu, trasování zásobníku se restartuje v aktuální metodě a seznam volání metody mezi původní metodou, která vyvolala výjimku a aktuální metoda je ztracena. Chcete-li zachovat původní informace trasování zásobníku s výjimkou, použijte throw
příkaz bez určení výjimky.
Následující fragment kódu nevygeneruje upozornění pro pravidlo CA2200. Komentářový řádek by ale aktivoval narušení.
catch (ArithmeticException e)
{
// throw e;
throw;
}
Zavedená verze
5,0
Doporučená akce
Znovu načítá výjimky bez explicitního zadání výjimky. Další informace najdete v tématu CA2200.
Pokud chcete analýzu kódu úplně zakázat, nastavte
EnableNETAnalyzers
vfalse
souboru projektu. Další informace naleznete v tématu EnableNETAnalyzers.
Ovlivněná rozhraní API
Nedetekovatelné prostřednictvím analýzy rozhraní API.