Dela via


Varning CA2200: Återväxt för att bevara stackinformation

.NET-kodanalysregeln CA2200 är aktiverad som standard med början i .NET 5. Den skapar en byggvarning för alla catch block som återväxar ett undantag och undantaget anges uttryckligen i -instruktionen throw .

Ändra beskrivning

Från och med .NET 5 innehåller .NET SDK .NET-källkodsanalyserare. Flera av dessa regler är aktiverade som standard, inklusive CA2200. Om projektet innehåller kod som bryter mot den här regeln och är konfigurerat för att behandla varningar som fel kan den här ändringen bryta mot bygget.

Regel CA2200 flaggar kod där undantag återaktiveras och undantagsvariabeln anges i -instruktionen throw . När ett undantag utlöses är en del av den information som det bär stackspårningen. Stackspårningen är en lista över metodanropshierarkin som börjar med metoden som genererar undantaget och slutar med metoden som fångar undantaget. Om ett undantag ändras genom att du anger undantaget i -instruktionen throw startas stackspårningen om med den aktuella metoden och listan över metodanrop mellan den ursprungliga metoden som utlöste undantaget och den aktuella metoden går förlorad. Om du vill behålla den ursprungliga stackspårningsinformationen med undantaget använder du -instruktionen throw utan att ange undantaget.

Följande kodfragment genererar ingen varning för regeln CA2200. Den kommenterade raden skulle dock utlösa en överträdelse.

catch (ArithmeticException e)
{
    // throw e;
    throw;
}

Version introducerad

5,0

  • Återväxa undantag utan att uttryckligen ange undantaget. Mer information finns i CA2200.

  • Om du vill inaktivera kodanalys helt anger du EnableNETAnalyzers till false i projektfilen. Mer information finns i EnableNETAnalyzers.

Berörda API:er

Går inte att identifiera via API-analys.