Maison >développement back-end >C++ >Comment puis-je implémenter la gestion globale des exceptions dans les applications console ?

Comment puis-je implémenter la gestion globale des exceptions dans les applications console ?

Linda Hamilton
Linda Hamiltonoriginal
2025-01-24 08:07:091010parcourir

How Can I Implement Global Exception Handling in Console Applications?

Gestion globale des exceptions dans les applications console

Dans les applications console, les exceptions non gérées peuvent interrompre l'exécution de l'application et entraîner une perte de données. Pour éviter cela, vous pouvez définir un gestionnaire d'exceptions global pour intercepter et gérer ces exceptions avec élégance.

Gestion personnalisée des exceptions globales

La classe AppDomain fournit un événement UnhandledException auquel il est possible de souscrire pour définir un gestionnaire d'exceptions global. Dans .NET 2.0 et supérieur, vous pouvez utiliser le code suivant :

<code class="language-csharp">AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(MyExceptionHandler);</code>

Notes VB.NET

Lorsque vous travaillez dans VB.NET, veuillez noter que vous devez utiliser le mot-clé "AddHandler" avant l'objet AppDomain.CurrentDomain, comme indiqué ci-dessous :

<code class="language-vb.net">AddHandler AppDomain.CurrentDomain.UnhandledException, New UnhandledExceptionEventHandler(AddressOf MyExceptionHandler)</code>

Exemple de mise en œuvre

Le code C# suivant fournit un exemple de base de gestionnaire d'exceptions global d'application console :

<code class="language-csharp">using System;

class Program
{
    static void Main(string[] args)
    {
        // 注册全局异常处理程序
        AppDomain.CurrentDomain.UnhandledException += UnhandledExceptionTrapper;

        // 抛出一个未处理的异常以进行演示
        throw new Exception("程序异常!");
    }

    static void UnhandledExceptionTrapper(object sender, UnhandledExceptionEventArgs e)
    {
        // 记录或处理未处理的异常
        Console.WriteLine(e.ExceptionObject.ToString());

        // 让用户有机会查看错误消息
        Console.WriteLine("按 Enter 键继续");
        Console.ReadLine();

        // 终止应用程序
        Environment.Exit(1);
    }
}</code>

Remarque : Les exceptions de type et de chargement de fichier générées par le CLR lors de la compilation JIT ne peuvent pas être interceptées à l'aide des gestionnaires d'exceptions globaux. Pour gérer ces exceptions, envisagez une compilation paresseuse ou appliquez l'attribut [MethodImpl(MethodImplOptions.NoInlining)] au code à risque.

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!

Déclaration:
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