Un'eccezione è un problema che si verifica durante l'esecuzione del un programma e che deve essere risolto prima che il programma possa procedere.

Un blocco di codice che potrebbe sollevare eccezioni si racchiude nell'istruzione di controllo try per intercettare eventuali eccezioni sollevate in quel codice.
I tipi di eccezioni che si vogliono intercettare sono indicate nelle istruzioni catch ne esiste una per ciascuna eccezione da gestire.

sintassi:
try
{

... codice da testare che potrebbe provocare l'eccezione
}

catch senza definizione dell'eccezione
{
... codice da eseguire se si presenta un'eccezione
}

catch (tipo_eccezione oggetto_passato) con la specifica del tipo di eccezione
{
... codice da eseguire se si presenta quel tipo di eccezione
}

finally
{
... codice che viene eseguito sicuramente dopo la gestione dell'eccezione
}


nel costrutto try-catch è necessario specificare almeno una clausola catch oppure una finally; si possono indicare più catch, una per ogni tipo di errore che si vuole gestire, mentre è consentito inserire solo una clausola finally.

l'oggetto passato ex contiene varie informazioni sull'errore che possono essere usate (ad esempio, la proprietà ex.Message restituisce una stringa di descrizione della causa dell'eccezione)

tipi di eccezioni:
le eccezioni sono delle classi e quindi sono raggruppate all'interno di namespace
va quindi per ciascuna inserita la using corretta


esempio: converto una variabile in byte ed intercetto un eventuale errore di formato FormatException
try
{

numeroByte = byte.Parse (numeroString, NumberStyles.HexNumber);
}

catch (FormatException ex)
{
MessageBox.Show(ex.Message,"Attenzione!", MessageBoxButtons.OK, MessageBoxIcon.Error);
}


esempio: apro un file immagine e lo visualizzo su un PictureBox
try
{

picImmagine.Image = Bitmap.FromFile("nomefile"); visualizzo il file immagine
}

catch (FileNotFoundException) file non esiste
{
MessageBox.Show("Impossibile trovare il file " + txtNomeFile.Text + ".", "Errore", MessageBoxButtons.OK, MessageBoxIcon.Error);
}

catch (Exception ex) il resto delle eccezioni, con messaggio che indica quale eccezione é stata sollevata
{
MessageBox.Show("Errore durante il caricamento: " + ex.Message,"Errore", MessageBoxButtons.OK, MessageBoxIcon.Error);
}