Pengendalian Pengecualian Teguh dalam Apl Konsol .NET
Menguruskan pengecualian yang tidak dikendalikan dengan berkesan adalah penting untuk kestabilan mana-mana aplikasi konsol .NET. Walaupun ASP.NET menawarkan pendekatan global.asax
global, dan aplikasi Windows menggunakan AppDomain.CurrentDomain.UnhandledException
, aplikasi konsol memerlukan strategi yang sedikit berbeza. Menugaskan pengendali acara secara langsung kepada AppDomain.CurrentDomain.UnhandledException
dalam sesetengah versi .NET mungkin gagal.
Penyelesaian: Memanfaatkan AppDomain.CurrentDomain.UnhandledException
Kuncinya ialah menggunakan acara AppDomain.CurrentDomain.UnhandledException
dengan betul, melaraskan sintaks mengikut keperluan. Ini memastikan tangkapan pengecualian menyeluruh dalam aplikasi konsol anda.
Contoh Ilustrasi (C#):
<code class="language-csharp">using System; class Program { 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); // Indicate an error exit code } }</code>
Pertimbangan Penting:
Kaedah ini berkesan menangkap kebanyakan pengecualian yang tidak dikendalikan. Walau bagaimanapun, pengecualian yang timbul daripada isu pemuatan jenis atau pemuatan fail sebelum Main()
pelaksanaan tetap tidak diketahui. Untuk menangani kes kelebihan ini, pertimbangkan untuk mengasingkan kod yang berpotensi bermasalah dalam kaedah berasingan dan gunakan atribut [MethodImpl(MethodImplOptions.NoInlining)]
untuk menghalang pengkompil JIT daripada mengoptimumkan pengendalian pengecualian. Ini memastikan pengendali pengecualian dicetuskan walaupun untuk ralat masa jalan awal.
Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Pengendalian Pengecualian Global dalam Aplikasi Konsol .NET?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!