2009-08-20 8 views

Répondre

1

Pour intercepter les exceptions non interceptées sur les threads de l'interface utilisateur uniquement, vous pouvez utiliser l'événement Application.ThreadException.

Pour intercepter les exceptions non interceptées sur tous les threads du domaine, utilisez AppDomain.Current.UnhandledException. Ce dernier ne vous laissera pas avaler l'exception, cependant - vous pouvez l'enregistrer dans le gestionnaire, mais une fois qu'il est retourné, l'exception sera transmise à Watson, qui affichera la fenêtre de crash Win32 habituelle.

+0

Comment pourrais-je le supprimer si j'utilise le second mode? –

+0

Vous ne pouvez pas faire cela, qui est par conception. En fait, vous ne devriez pas - directives de l'application Windows (que vous devez suivre si vous voulez autocollant "Certifié pour Vista" pour votre application, et pourrait vouloir suivre de toute façon parce que c'est le guide de la façon dont les applications Windows bien comportés devraient se comporter) précise que les erreurs doivent être signalées via Watson. –

+0

Donc je suppose que je ferais mieux de prendre toutes les exceptions. –