Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah saya melaksanakan pengendalian pengecualian global dalam aplikasi konsol .NET?

Bagaimanakah saya melaksanakan pengendalian pengecualian global dalam aplikasi konsol .NET?

Mary-Kate Olsen
Mary-Kate Olsenasal
2025-01-24 07:51:08876semak imbas

How Do I Implement Global Exception Handling in a .NET Console Application?

Pengendalian pengecualian global dalam aplikasi konsol .NET

Mengendalikan pengecualian yang tidak dikendalikan adalah penting untuk mengekalkan kestabilan aplikasi dan menyediakan pengalaman pengguna yang konsisten. Dalam .NET, mentakrifkan pengendali pengecualian global untuk aplikasi konsol membolehkan anda memintas dan membalas pengecualian yang berlaku di mana-mana dalam aplikasi.

Penyelesaian terperinci

Tidak seperti aplikasi ASP.NET (yang menggunakan global.asax) atau aplikasi dan perkhidmatan Windows (yang menggunakan acara UnhandledExceptionEventHandler), aplikasi konsol memerlukan pendekatan yang sedikit berbeza.

Kaedah pelaksanaan

Untuk menetapkan pengendali pengecualian global dalam aplikasi konsol .NET:

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

namespace MyConsoleApp
{
    class Program
    {
        static void Main(string[] args)
        {
            AppDomain.CurrentDomain.UnhandledException += MyExceptionHandler; // VB.NET需要"AddHandler"前缀

            throw new Exception("自定义异常"); // 演示未处理异常
        }

        static void MyExceptionHandler(object sender, UnhandledExceptionEventArgs e)
        {
            Console.WriteLine($"未处理异常: {e.ExceptionObject}");
            Console.WriteLine("按Enter键继续...");
            Console.ReadLine();
            Environment.Exit(1);
        }
    }
}</code>

Arahan untuk Pengguna Visual Basic

Dalam VB.NET, kata kunci "AddHandler" mesti digunakan sebelum perwakilan acara (dalam kes ini, UnhandledException). Ini disebabkan oleh perbezaan dalam cara VB.NET dan C# mengendalikan langganan acara.

Penghadan

Adalah penting untuk ambil perhatian bahawa teknik ini tidak menangkap pengecualian jenis dan pemuatan fail yang dijana oleh masa jalan sebelum kaedah Main() memulakan pelaksanaan. Untuk mengendalikan pengecualian sedemikian, tangguhkan kompilasi JIT dengan mengalihkan kod berisiko ke kaedah berasingan dan menggunakan atribut [MethodImpl(MethodImplOptions.NoInlining)].

Atas ialah kandungan terperinci Bagaimanakah saya melaksanakan pengendalian pengecualian global dalam aplikasi konsol .NET?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn