WinForms Global De Gestion Des Exceptions?
J'ai mis en place un logiciel qui ont une bibliothèque DLL qui contient un vaste ensemble de classes qui comprend toutes les méthodes pour mon logiciel.
Maintenant, je veux être en mesure de traiter certaines mondiale comme l'erreur #26 qui est un pas de Réseau d'Erreur Lié à toutes ces catégories, au lieu d'aller à chaque classe et l'ajouter. Comment faire ?
Vous devez vous connecter pour publier un commentaire.
Si
#26
est une exception, alors vous pouvez utiliserAppDomain.CurrentDomain.UnhandledException
événement. Si c'est juste une valeur de retour, alors je ne vois pas de chance pour le gérer à l'échelle mondiale.Depuis sa une application winforms, vous pourriez juste l'enfermer
Application.Run(new MainForm());
dans un bloc try catch.Je ne sais pas toutes les implications de ce type de solution pourrait causer, mais je viens de vous dire ce que vous avez besoin.
D'autres options sont en souscrivant à Application.ThreadException événement.
Lire la suite ici: unhandledexceptions
Il y a également le domaine d'application.UnhandledException et vous devriez le lire, la différence entre eux ici sur MSDN.
À partir de MSDN :
Avec la référence de Centralisé La Gestion Des Exceptions dans l'Application Windows en C#, j'ai trouvé une bonne solution :
Dans la classe ci-dessus, nous allons associer un gestionnaire d'événement pour les deux événements. Il est préférable de joindre ces événements dès que la principale méthode commence.
Application.ThreadException - Cet événement sera déclenché lorsqu'une exception est levée dans le thread principal. Si l'on ajoute un gestionnaire d'événement, l'exception est traitée par la méthode.
Domaine d'application.CurrentDomain.UnhandledException - Cet événement sera déclenché lorsqu'une exception est levée dans les autres threads utilisés dans l'application. Le pire scénario est que, dès que les gestionnaires de l'exécution devient de plus, l'exception est de nouveau jeté alors que l'application se termine. Ce besoin d'être manipulé. Ici, j'ai utilisé un peu de code pour gérer cette situation et de poursuivre l'exécution de l'application sans interruption.
La logique que j'ai utilisée pour surmonter cette situation est tout à fait suspendre le fil dans le gestionnaire d'événements, de sorte que l'application continue à fonctionner correctement. Encore une fois un problème se pose dans la suspension de ce fil. Lorsque le formulaire principal est fermé, l'application doit normalement quitter, mais que le thread est en état de suspension, la demande restera toujours en cours d'exécution. Donc, pour sortir de l'application et arrêter le processus, Environnement.Exit(-1) doit être appelée avant la fin de la méthode main.
Tout d'abord, Vous devez ajouter:
Après cela, Vous pouvez intercepter des exceptions, par exemple:
Poignée de la Application.ThreadException Événement.
D'erreur Global de l'interception en winforms
Comme une extension de ce qui est indiqué ci-dessus, j'utilise la suite:
...où le HandleException() la méthode peut être quelque chose comme:
Une autre façon de la peau, ce chat est:
Bien sûr, vous pouvez faire ce que vous voulez, dans la non Gérée() la méthode.