Avviso CA2200: Rethrow per mantenere i dettagli dello stack

La regola dell'analizzatore del codice .NET CA2200 è abilitata, per impostazione predefinita, a partire da .NET 5. Genera un avviso di compilazione per tutti i catch blocchi che generano nuovamente un'eccezione e l'eccezione viene specificata in modo esplicito nell'istruzione throw .

Descrizione delle modifiche

A partire da .NET 5, .NET SDK include analizzatori del codice sorgente .NET. Per impostazione predefinita, alcune di queste regole sono abilitate, tra cui CA2200. Se il progetto contiene codice che viola questa regola ed è configurato per considerare gli avvisi come errori, questa modifica potrebbe interrompere la compilazione.

La regola CA2200 contrassegna il codice in cui le eccezioni vengono rilanciate e la variabile d'eccezione è specificata nell'istruzione throw. Quando viene generata un'eccezione, parte delle informazioni che contiene è la traccia dello stack. L'analisi dello stack è un elenco della gerarchia di chiamate al metodo che inizia con il metodo che genera l'eccezione e termina con il metodo che intercetta l'eccezione. Se un'eccezione viene risollevata specificando l'eccezione nell'istruzione throw, la traccia dello stack riparte dal metodo corrente e l'elenco delle chiamate ai metodi tra il metodo originale che ha sollevato l'eccezione e il metodo corrente viene perso. Per mantenere le informazioni di analisi dello stack originali con l'eccezione, usare l'istruzione throw senza specificare l'eccezione.

Il frammento di codice seguente non genera un avviso per la regola CA2200. La riga commentata attiva tuttavia una violazione.

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

Versione introdotta

5.0

  • Rilanciare le eccezioni senza specificare esplicitamente l'eccezione. Per altre informazioni, vedere CA2200.

  • Per disabilitare completamente l'analisi del codice, impostare EnableNETAnalyzers su false nel il file di progetto. Per altre informazioni, vedere EnableNETAnalyzers.

Le API interessate

Non rilevabile tramite l'analisi api.