CA2201: Non generare tipi di eccezione riservati
TypeName |
DoNotRaiseReservedExceptionTypes |
CheckId |
CA2201 |
Category |
Microsoft.Usage |
Breaking Change |
Breaking |
Causa
Un metodo ha generato un tipo di eccezione troppo generale o riservato dal runtime.
Descrizione della regola
I seguenti tipi di eccezione sono troppo generali per fornire informazioni sufficienti all'utente:
I seguenti tipi di eccezione sono riservati e devono essere generati esclusivamente da Common Language Runtime:
Non generare eccezioni generali
Se si genera un tipo di eccezione generale, ad esempio Exception o SystemException in una libreria o framework, i consumer saranno costretti a rilevare tutte le eccezioni, comprese quelle sconosciute che non sono progettati per gestire.
Generare invece un tipo più derivato che esista già nel framework, oppure creare un tipo personalizzato che derivi da Exception.
Generare eccezioni specifiche
Nella tabella seguente vengono mostrati i parametri e le eccezioni da generare quando si convalida il parametro, incluso il parametro valore nella funzione di accesso impostata di una proprietà:
Descrizione parametro: |
Eccezione |
---|---|
Riferimento null |
|
Al di fuori dell'intervallo di valori consentito (ad esempio un indice per una raccolta o un'elenco) |
|
Valore enum non valido |
|
Contiene un formato che non soddisfa le specifiche di parametro di un metodo (ad esempio la stringa di formato per ToString(String)) |
|
Altri parametri non validi |
Quando un'operazione è non valida per lo stato corrente di un oggetto viene generata InvalidOperationException
Quando viene effettuata un'operazione su un oggetto che è stato eliminato, viene generata ObjectDisposedException
Quando un'operazione non è supportata (ad esempio in un oggetto Stream.Write sottoposto a override in un flusso aperto per la lettura) viene generata NotSupportedException
Quando una conversione comporterebbe un overflow (ad esempio in caso di overload di un operatore di cast esplicito) viene generata OverflowException
Per tutte le altre situazioni, creare un tipo personalizzato che derivi da Exception e generarlo.
Come correggere le violazioni
Per correggere una violazione di questa regola, modificare il tipo dell'eccezione generata in un tipo specifico non compreso tra quelli riservati.
Esclusione di avvisi
Non escludere un avviso da questa regola.