Maison > développement back-end > C++ > Comment gérer efficacement les exceptions non gérées dans les applications console .NET ?

Comment gérer efficacement les exceptions non gérées dans les applications console .NET ?

Patricia Arquette
Libérer: 2025-01-24 07:57:09
original
872 Les gens l'ont consulté

Gestion des exceptions non gérées dans les applications de la console .NET

Ce guide montre comment gérer efficacement les exceptions non gérées dans les applications de console .NET. Contrairement aux applications graphiques ou Web, les applications console nécessitent une approche légèrement différente en utilisant l'objet AppDomain.CurrentDomain.

La méthode courante consistant à attacher un gestionnaire d'événements à l'événement UnhandledException, comme indiqué ci-dessous, échoue souvent dans les applications console :

<code class="language-csharp">AppDomain currentDomain = AppDomain.CurrentDomain;
currentDomain.UnhandledException += new UnhandledExceptionEventHandler(MyExceptionHandler);</code>
Copier après la connexion

C'est parce que le AppDomain n'est pas immédiatement disponible. La solution est d'attacher directement le gestionnaire à l'aide de l'opérateur = en C# :

<code class="language-csharp">AppDomain.CurrentDomain.UnhandledException += MyExceptionHandler;</code>
Copier après la connexion

Cela garantit que le gestionnaire est correctement enregistré. Voici un exemple illustrant le recouvrement des exceptions :

<code class="language-csharp">static void Main(string[] args)
{
    AppDomain.CurrentDomain.UnhandledException += UnhandledExceptionTrapper;
    throw new Exception("Application Error!");
}

static void UnhandledExceptionTrapper(object sender, UnhandledExceptionEventArgs e)
{
    Console.WriteLine(e.ExceptionObject.ToString());
    Console.WriteLine("An unexpected error occurred.  Press Enter to exit.");
    Console.ReadLine();
    Environment.Exit(1);
}</code>
Copier après la connexion

Ce code enregistre la méthode UnhandledExceptionTrapper. Lorsqu'une exception non gérée se produit, cette méthode enregistre les détails de l'exception et permet à l'utilisateur d'accuser réception de l'erreur avant la fin de l'application.

Remarque importante : cette méthode ne détectera pas les exceptions levées lors de la compilation JIT (comme les erreurs de chargement de type ou de chargement de fichier). Pour y remédier, utilisez une stratégie de « retardement de la gigue ». Cela implique d'isoler le code potentiellement problématique dans une méthode distincte et de le décorer avec l'attribut [MethodImpl(MethodImplOptions.NoInlining)].

How to Effectively Handle Unhandled Exceptions in .NET Console Applications?

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal