Antonio Esposito's


Prodotti tipici .NETtiani

Errori non gestiti, ASP.NET

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

Categoria: Tips
martedì, 02 mar 2010 Ore. 10.49
Statistiche
  • Views Home Page: 11.588
  • Views Posts: 60.521
  • Views Gallerie: 0
  • n° Posts: 44
  • n° Commenti: 16
Copyright © 2002-2007 - Blogs 2.0
dotNetHell.it | Home Page Blogs
ASP.NET 2.0 Windows 2003