È possibile creare un gestore degli errori centralizzato per applicazioni ASP.NET?

Utente HTML.it
chiede

È possibile creare un gestore degli errori centralizzato per applicazioni ASP.NET?

Redazione HTML.it
risponde

Sì. Bisogna innanzi tutto aggiungere al progetto un file di tipo Global Application Class (Classe di applicazione globale), a cui è automaticamente assegnato il nome Global.asax: esso contiene, tra gli altri, il metodo Application_Error, che gestisce un evento generato quando nel sito si verifica una eccezione non gestita:

void Application_Error(object sender, EventArgs e) 
{ 
  Exception ex = Server.GetLastError().InnerException;
  Server.ClearError();
  Response.Write("Si è verificato un errore: " + ex.Message);
}

Per verificare il funzionamento di questo sistema, basta aggiungere un pulsante ad una pagina e, nella routine di gestore del suo evento Click, lanciare un’eccezione:

protected void Button1_Click(object sender, EventArgs e)
{
  throw new ApplicationException("Esempio di errore non gestito.");
}

È importante ricordare che, per fare in modo che le eccezioni non gestite siano processate dall’evento Application_Error all’interno di Visual Studio, è necessario avviare l’applicazione Web senza debug, con la combinazione di tasti CTRL+F5. In caso contrario, l’eccezione attiverà automaticamente il debugger dell’ambiente di sviluppo.