2009-11-19 5 views

Répondre

6

Selon le type d'application (ASP.NET/Console, etc.), il existe différentes approches à adopter.

Pour les applications Windows Forms c'est la voie à suivre: -

namespace YourNamespace 
{ 
    static class Program 
    { 

     [STAThread] 
     static void Main() 
     { 
      AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException; 
      Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException); 
      Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException); 
      Application.EnableVisualStyles(); 
      Application.SetCompatibleTextRenderingDefault(false); 
      Application.Run(new Form1()); 
     } 

     static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e) 
     { 
      HandleException(e.Exception); 
     } 

     static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e) 
     { 
      HandleException((Exception)e.ExceptionObject); 
     } 

     static void HandleException(Exception e) 
     { 
      //Handle the Exception here 
     } 

    } 
} 

Dans ASP.NET, vous pouvez capturer toutes les exceptions non gérées en utilisant l'événement Application_OnError dans le Global.asax ou en accrochant à la demande Evénement .OnError avec votre propre HttpModule.

Vous pouvez également utiliser l'un de ces gestionnaires d'exceptions tiers.

ELMAH prend en charge les applications ASP.NET

http://code.google.com/p/elmah/

Exceptioneer (Nous construisons ce - juste mon signalement d'intérêt dans la région) prend en charge ASP.NET, les applications de la console, Windows Forms appliactions, Applications WPF etc.

http://exceptioneer.com/

+0

Son extension VSTO - Extension d'application – shahjapan

+0

Vous devriez jeter un oeil à CodeSmith Insight (http://www.codesmithtools.com/product/insight) Il offre une tonne de fonctionnalités et est le meilleur produit pour gérer les exceptions et répondre à votre base d'utilisateurs. –

0

L'exception de journalisation dans le constructeur de l'exception n'est pas une bonne idée.

Quel type d'application utilisez-vous: Web ou Windows?

Si vous utilisez asp.net, vous pouvez rediriger votre page vers une page d'erreur commune et enregistrer l'erreur sur cette page. Asp.net fournit également l'événement application_error qui se déclenche en cas d'exception non gérée.

Habituellement, vous utilisez le bloc try/catch pour gérer les exceptions. Vous pouvez enregistrer une exception dans le bloc Catch.

try 
{ 

//your code 

} 

Catch(Exception ex) 

{ 

Log(ex); 

} 

Vous pouvez utiliser microsoft logging application block (ou tout autre api d'enregistrement) pour se connecter à votre exception.

1

Je travaille pour les outils CodeSmith et je vous recommande vivement de jeter un oeil à CodeSmith Insight. Nous l'utilisons dans notre application commerciale et cela a été un rêve devenu réalité. Nous utilisions Fogbugz auparavant et nous avons évalué un tas d'autres produits. Il vous permet de sérialiser des objets entiers ainsi que de renvoyer beaucoup d'informations supplémentaires qui aident à corriger les bogues (Traçage, logs, tags, captures d'écran, commentaires des utilisateurs et bien plus encore). Cela permet de gagner du temps à résoudre le problème en ayant une tonne d'informations à portée de main ainsi que la possibilité de demander à l'utilisateur qui a rencontré l'erreur pour plus d'informations.

Questions connexes