Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Melaksanakan Pengendalian Pengecualian Global dalam Aplikasi Konsol?
Pengendalian pengecualian global dalam aplikasi konsol
Dalam aplikasi konsol, pengecualian yang tidak dikendalikan boleh mengganggu pelaksanaan aplikasi dan boleh mengakibatkan kehilangan data. Untuk mengelakkan ini, anda boleh menentukan pengendali pengecualian global untuk menangkap dan mengendalikan pengecualian ini dengan anggun.
Pengendalian pengecualian global tersuai
Kelas AppDomain menyediakan acara UnhandledException yang boleh dilanggan untuk menentukan pengendali pengecualian global. Dalam .NET 2.0 dan ke atas, anda boleh menggunakan kod berikut:
<code class="language-csharp">AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(MyExceptionHandler);</code>
Nota VB.NET
Apabila bekerja dalam VB.NET, sila ambil perhatian bahawa anda mesti menggunakan kata kunci "AddHandler" sebelum objek AppDomain.CurrentDomain, seperti yang ditunjukkan di bawah:
<code class="language-vb.net">AddHandler AppDomain.CurrentDomain.UnhandledException, New UnhandledExceptionEventHandler(AddressOf MyExceptionHandler)</code>
Contoh pelaksanaan
Kod C# berikut menyediakan contoh asas pengendali pengecualian global aplikasi konsol:
<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>
Nota: Pengecualian jenis dan pemuatan fail yang dijana oleh CLR semasa penyusunan JIT tidak boleh ditangkap menggunakan pengendali pengecualian global. Untuk mengendalikan pengecualian ini, pertimbangkan kompilasi malas atau gunakan atribut [MethodImpl(MethodImplOptions.NoInlining)]
pada kod berisiko.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melaksanakan Pengendalian Pengecualian Global dalam Aplikasi Konsol?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!