finallyIl blocco finally è opzionale e viene utilizzato per eseguire operazioni di pulizia, come la liberazione della memoria o la chiusura di file.
finallycatch, il finally è facoltativo.catch, il blocco finally è obbligatorio, altrimenti il codice genera un errore di compilazione.finally non gestisce le eccezioni, ma viene sempre eseguito alla fine, indipendentemente dal fatto che si sia verificata un'eccezione o meno.finallytry
{
// Simulazione di un errore
int result = 10 / 0;
}
catch (DivideByZeroException ex)
{
Console.WriteLine("Errore: divisione per zero.");
}
finally
{
Console.WriteLine("Questo messaggio viene sempre eseguito.");
}
Output:
Errore: divisione per zero.
Questo messaggio viene sempre eseguito.
catchQuando si catturano più tipi di eccezioni, bisogna seguire questa regola:
catch più specifici, per intercettare errori particolari.catch generico (Exception), per catturare eventuali errori non previsti.try
{
string text = null;
int length = text.Length; // Genera un'eccezione
}
catch (NullReferenceException ex)
{
Console.WriteLine("Errore: variabile null.");
}
catch (Exception ex)
{
Console.WriteLine("Errore generico: " + ex.Message);
}
Se il blocco catch generico fosse stato messo prima di quello specifico, il compilatore segnalerebbe un errore perché il catch generico catturerebbe tutte le eccezioni, rendendo inutile quello specifico.