Question

Un programme C # est appelé par:

Application.Run (new formClass ());

Je voudrais mettre un essai / attraper autour de tout cela pour piéger les exceptions non capturées. Lorsque j'exprime cette méthode Run, les exceptions ne sont pas interceptées; le contrôle ne retourne ici que lorsque le programme se termine après une exception non interceptée.

Où puis-je mettre try / catch pour couvrir l'ensemble du programme? Merci!

Était-ce utile?

Autres conseils

En principe, vous ne pouvez pas intercepter toutes les exceptions lorsque vous utilisez le processus d’hébergement CLR par défaut. Période. En effet, la AppDomain.UnhandledException l'événement est uniquement une notification, vous ne pouvez pas gérer l'exception (ce qui signifie que vous ne pouvez pas empêcher la fermeture de l'application après le traitement de la notification).

Toutefois, vous pouvez intercepter et gérer toutes les exceptions dans le thread d'interface utilisateur d'une application WinForms à l'aide de son Application.ThreadException gestionnaire (et contrôle le comportement via UnhandledExceptionMode ). Les autres threads générant une exception ne seront pas interceptés par ce gestionnaire.

En général, ce n’est pas une bonne idée d’essayer de gérer toutes les exceptions. Vous pouvez cependant utiliser le AppDomain.UnhandledException pour consigner l'erreur et / ou effectuer des tâches de nettoyage importantes (par exemple, fermer une base de données basée sur des fichiers ou quoi que ce soit).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top