Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Le applicazioni devono essere in grado di gestire gli errori che si verificano durante l'esecuzione in modo coerente. .NET fornisce un modello per notificare le applicazioni di errori in modo uniforme: le operazioni .NET indicano un errore generando eccezioni.
Eccezioni
Un'eccezione è qualsiasi condizione di errore o comportamento imprevisto rilevato da un programma in esecuzione. È possibile generare eccezioni a causa di un errore nel codice o nel codice chiamato (ad esempio una libreria condivisa), risorse del sistema operativo non disponibili, condizioni impreviste rilevate dal runtime (ad esempio codice che non può essere verificato) e così via. L'applicazione può riprendersi da alcune di queste condizioni, ma non da altre. Sebbene sia possibile eseguire il ripristino dalla maggior parte delle eccezioni dell'applicazione, non è possibile eseguire il ripristino dalla maggior parte delle eccezioni di runtime.
In .NET un'eccezione è un oggetto che eredita dalla System.Exception classe . Viene generata un'eccezione da un'area di codice in cui si è verificato un problema. L'eccezione viene passata su per lo stack fino a quando l'applicazione la gestisce o il programma termina.
Eccezioni e metodi tradizionali di gestione degli errori
Tradizionalmente, il modello di gestione degli errori di un linguaggio si basava sul modo univoco del linguaggio di rilevare gli errori e individuare i gestori per tali errori o sul meccanismo di gestione degli errori fornito dal sistema operativo. Il modo in cui .NET implementa la gestione delle eccezioni offre i vantaggi seguenti:
La generazione e la gestione delle eccezioni funzionano allo stesso modo per i linguaggi di programmazione .NET.
Non richiede una particolare sintassi del linguaggio per la gestione delle eccezioni, ma consente a ogni linguaggio di definire la propria sintassi.
Le eccezioni possono essere generate attraverso i limiti del processo e persino i confini della macchina.
Il codice di gestione delle eccezioni può essere aggiunto a un'applicazione per aumentare l'affidabilità del programma.
Le eccezioni offrono vantaggi rispetto ad altri metodi di notifica degli errori, ad esempio i codici di ritorno. Gli errori non passano inosservati perché se un'eccezione viene generata e non viene gestita, il runtime termina l'applicazione. I valori non validi non continuano a propagarsi nel sistema a causa del codice che non riesce a verificare la presenza di un codice restituito di errore.
Eccezioni comuni
Nella tabella seguente sono elencate alcune eccezioni comuni con esempi di ciò che può causarli.
Tipo di eccezione | Descrizione | Esempio |
---|---|---|
Exception | Classe di base per tutte le eccezioni. | Nessuno (usare una classe derivata di questa eccezione). |
IndexOutOfRangeException | Generata dal runtime solo quando una matrice viene indicizzata in modo non corretto. | Indicizzazione di una matrice al di fuori dell'intervallo valido: arr[arr.Length+1] |
NullReferenceException | Generata dal runtime solo quando viene fatto riferimento a un oggetto Null. | object o = null; o.ToString(); |
InvalidOperationException | Generato dai metodi quando si trovano in uno stato non valido. | Chiamare Enumerator.MoveNext() dopo aver rimosso un elemento dalla raccolta sottostante. |
ArgumentException | Classe di base per tutte le eccezioni di argomento. | Nessuno (usare una classe derivata di questa eccezione). |
ArgumentNullException | Generata da metodi che non consentono a un argomento di essere nullo. | String s = null; "Calculate".IndexOf(s); |
ArgumentOutOfRangeException | Generata da metodi che verificano che gli argomenti si trovino in un intervallo specificato. | String s = "string"; s.Substring(s.Length+1); |
Vedere anche
- Classe e proprietà di eccezione
- Procedura: Usare il blocco Try-Catch per intercettare le eccezioni
- Guida: Usare eccezioni specifiche in un blocco catch
- Procedura: Generare in modo esplicito un'eccezione
- Procedura: Creare eccezioni User-Defined
- Uso degli gestori di eccezioni User-Filtered
- Guida a: Usare i blocchi finally
- Gestione delle eccezioni di interoperabilità COM
- Procedure consigliate per le eccezioni
- Ciò che ogni sviluppatore deve sapere sulle eccezioni nel runtime