Sdílet prostřednictvím


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

  • 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 v false souboru projektu. Další informace naleznete v tématu EnableNETAnalyzers.

Ovlivněná rozhraní API

Nedetekovatelné prostřednictvím analýzy rozhraní API.