33 votes

Comment attraper TOUTES les exceptions/se bloque dans un .NET app

Double Possible:
.NET - Quelle est la meilleure façon de mettre en œuvre un "attraper toutes les exceptions gestionnaire"

J'ai un .NET console app qui crash et l'affichage d'un message à l'utilisateur. L'ensemble de mon code est dans un try{<code>} catch(Exception e){<stuff>} bloc, mais encore des erreurs sont parfois affichés.

Dans une application Win32, vous pouvez capturer toutes les exceptions possibles/accidents par l'installation de divers gestionnaires d'exception:

/* C++ exc handlers */
_set_se_translator
SetUnhandledExceptionFilter
_set_purecall_handler
set_terminate
set_unexpected
_set_invalid_parameter_handler

Quel est l'équivalent dans le .NET monde donc je peut gérer/log/calme tous les possibles cas d'erreur?

38voto

Juanma Points 2648

Vous pouvez ajouter un gestionnaire d'événements pour domaine d'application.UnhandledException événement, et il sera appelé lorsqu'une exception est levée et n'est pas pris.

10voto

Ricky AH Points 2366

Cet article dans codeproject par notre hôte Jeff Atwood est ce que vous avez besoin. Inclut le code pour attraper les exceptions non gérées et des bonnes pratiques pour l'affichage d'informations concernant le crash de l'utilisateur.

7voto

Drejc Points 5424

Le Global.asax classe est votre dernière ligne de défense. Regardez:

protected void Application_Error(Object sender, EventArgs e)

méthode

5voto

Peli Points 2112

Soyez conscient que certains exception sont dangereux pour la catch - ou surtout la part insaisissable,

  • OutOfMemoryException: tout ce que vous faites dans le gestionnaire catch peut allouer de la mémoire (dans le géré ou non géré côté de la CLR) et ainsi déclencher un autre OOM
  • StackOverflowException: selon que le CLR détecté suffisamment tôt, vous pourriez être averti. Pire des cas, il suffit d'tue le processus.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by: