2010-11-23 12 views
3

je l'ai écrit un utilitaire qui surveille les exceptions non gérées et crée ensuite un minidump dans le cas où l'on arrive.Exception non gérée

Est-il possible, quand l'événement se déclenche, au lieu d'avoir la norme messagebox affichant l'exception non gérée, puis-je désactiver cela et afficher mon propre avec des informations différentes?

Merci.

+0

êtes-vous après avoir remplacé MessageBox avec votre propre dialogue? Pas sûr de ce que vous demandez ici. –

+0

Bonjour, Oui ... lorsque l'utilisateur exécute le programme et qu'une exception non gérée se produit, il reçoit la boîte aux lettres d'exception standard non gérée. Je veux désactiver cette boîte de message. Lorsque l'exception non gérée se produit, j'ai un événement qui se déclenche, crée un minidump et je veux aussi afficher mon propre message d'erreur. Merci. –

Répondre

2

Manipulez le montrer vos propres messages d'erreur événement Application.ThreadException.

Vous pouvez accrocher l'événement en haut de votre principale méthode comme ceci:

Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException); 

Et puis vous avez besoin de la méthode Handler:

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

Edit: Vous pouvez également gérer l'événement AppDomain.UnhandledException car certaines exceptions ne passent pas par le gestionnaire ThreadException.

+0

Je suis capable de faire cela, ce que je veux faire est de désactiver le message d'avertissement C# standard. Merci. –

+0

+1 Peut également être utile pour gérer l'événement Application.ThreadExit. –

+1

Il le désactive lorsque vous vous connectez à l'événement. Le thread actuel a seulement un gestionnaire d'exception, pas une chaîne d'entre eux comme les événements normaux. Lorsque vous vous connectez avec votre gestionnaire, ils décochent leur gestionnaire par défaut, qui affiche le message d'exception normal. –

2

Si vous implémentez, vous pouvez faire ce que vous voulez. Montrez-le sur MessageBox ou écrivez-le dans un fichier journal.

1

Vous pouvez le faire,

catch(Exception e) 
{ 
throw new Exception("This is unhandled exception"); 
} 
Questions connexes