2013-05-22 12 views
0

Je m'inscris à l'exception non gérée de mon application WPF.enregistrement UnhandledException de AppDomain WPF

Après que UnhandledExceptionHandler invoque, l'application se ferme automatiquement? Ou dois-je appeler ShutdownProcess();

Est-ce suffisant?

static void Main(string[] args) 
    { 
     //Register to unhandled exception for this application 
     AppDomain.CurrentDomain.UnhandledException += UnhandledExceptionHandler; 


    static void UnhandledExceptionHandler(object sender, UnhandledExceptionEventArgs args) 
    { 
     try 
     { 
      Exception ex = (Exception)args.ExceptionObject; 
      _logger.ErrorFormat("Process caught unhandled exception, Exception = {0}", ex); 
      ShutdownProcess(); 
     } 
     catch 
     { 
      // swallow silently... nothing we can do. 
     } 
    } 
+0

L'application se fermera automatiquement si vous ne définissez pas e.Handled = true. Quelle était votre question exactement? –

+0

Je n'ai aucun e.Handled et ce n'est pas DispacherUnhandledException .. – ilansch

+0

Ma question est - est-ce que mon processus sera fermé automatiquement? va-t-il afficher une fenêtre popup OS "laide" à propos de l'écrasement? – ilansch

Répondre

1

De MSDN:

« Cet événement fournit une notification des exceptions non rattrapées Il permet l'application d'enregistrer des informations sur l'exception avant que le gestionnaire par défaut du système signale l'exception à l'utilisateur et . termine l'application. "

Donc le vilain Popup sera affiché indépendamment de ce que vous faites dans votre gestionnaire et l'application sera terminée après cela. Si vous ne souhaitez pas que le message d'erreur par défaut s'affiche, vous devez ajouter un gestionnaire à Application.Current.DispatcherUnhandledException pour enregistrer vos erreurs et appeler le Application.Current.Shutdown() vous-même.

Questions connexes