|
| Nell'articolo vediamo come gestire gli errori in C# attraverso la gestione delle eccezioni. |
Try/Catch
Il blocco identificato dalla keyword try definisce il blocco di istruzioni ove si può verificare un errore, mentre il blocco identificato da Catch contiene le istruzioni per gestire l'errore che si è generato.
Es:
public class Prova{
static void Main(string[] args){
int a = 10;
int b = 0;
try{
int c = a / b;
}
catch(DivideByZeroException){
Console.WriteLine("Divisione per zero");
}
catch{
Console.WriteLine("Altro errore");
}
}
}
Le istruzioni che si trovano nel blocco catch vengono eseguite fino a quando non si verifica un errore, da quel momento il flusso passa al blocco catch e le rimanenti istruzioni del blocco try non vengono più eseguite.
Il blocco catch cattura ogni tipo di errore, può ricevere un parametro derivato da System.Exception che serve per gestire certi tipi di errore particolari. I vari blocchi catch vengono processati nell'ordine in cui sono scritti quindi occorre specificare prima quelli con dei parametri e poi, per ultimo quello generico senza parametri.
Finally
Oltre ai blocchi try e catch è possibile specificare un blocco finally, il codice contenuto all'interno di questo blocco verrà eseguito in ogni caso, al verificarsi di un errore e communque prima del blocco catch,anche se non è gestito il blocco catch. Tale blocco può essere utile per chiudere files per esempio o più in generale per svolgere quelle funzioni che devono assolutamente essere eseguite.
Informazioni sull'errore
Come abbiamo già visto per ogni eccezione è possibile specificare un parametro, passandogli un oggetto system.exception, possamo usare le sue proprietà per avere dei dettagli sull'eccezione es:
catch(exception ex){
Console.WriteLine(ex.Message)
Console.WriteLine(ex.StackTrace)
Console.WriteLine(ex.GetType().Name)
}
In questo caso per esempio ci viene mostrato a video la descrizione dell'errore, lo stack delle chiamate che hanno portato all'errore ed il nome del tipo dell'eccezione (utile per getirlo).
Generare le eccezioni
Naturalmente è anche possibile generare un errore su nostro comando è sufficente utilizzare la keyword throw seguita da un istanza della classe Syste.Exception
|
|