Ciao
gli errori non gestititi in ASP.NET (cioè quelli accaduti fuori da un try-catch) possono essere intercettati in modo automatico in più punti:
il metodo più corretto per informare un utente di un eccezione è quello di non informarlo completamente, dirgli semplicemente che qualcosa non va, e che deve riprovare eventulamente. D'altronde bisogna loggare l'eccezione e per alcuni casi fare in modo di avvertire l'amministratore di sistema.
Per farlo possiamo abilitare i customErrors nel web.config nella sezione system.web, immettendo il nome della pagina cui fare redirect da far vedere all'uente. L'impostazione di default con il mode="RemoteOnly" è quella preferibile, il customerror serve per mascherare l'eccezione, con remoteOnly invece se l'eccezione avviene sul server (magari da un test dell'amministratore) questa non è mascherata e al suo posto si vede l'eccezione classica si IIS.
Alternativamente è possibile intercettare gli errori manualmente in due punti, in ogni pagina sull'evento OnError o a livello applicativo nel global.asax nell'Application_Error. Attenzione però che qui gli errori sono reali e tutta la logica di redirect è lasciata allo sviluppatore. In pagina l'errore è visibile in Server.GetLastError(). Una volta utilizzato, ricordarsi di lanciare Server.ClearError(). A livello application invece la vera eccezione è mascherata da una più generica HttpUnhandledException, quindi per acceder a quella originale fare Server.GetLastError().InnerException, poi sempre Server.ClearError();
Ciao