Cara Mengendalikan Pengecualian yang Dilemparkan dalam Benang Asing
Dalam aplikasi berbilang benang, menjadi penting untuk mengendalikan pengecualian yang berlaku dalam utas selain daripada yang melaksanakan kod utama. Cabaran ini memerlukan pengendalian yang teliti untuk memastikan pengendalian ralat yang betul dan kestabilan aplikasi.
Menggunakan Tugas
Sejak .NET 4, Tugas
task.ContinueWith(ExceptionHandler, TaskContinuationOptions.OnlyOnFaulted); private void ExceptionHandler(Task<int> task) { var exception = task.Exception; Console.WriteLine(exception); }
try { task.Wait(); } catch (AggregateException ex) { Console.WriteLine(ex); }
Menggunakan Thread dalam .NET 3.5
Dalam .NET 3.5, di mana Tugas
Exception exception = null; Thread thread = new Thread(() => SafeExecute(() => Test(0, 0), Handler)); thread.Start(); private void Handler(Exception exception) { Console.WriteLine(exception); }
Exception exception = null; Thread thread = new Thread(() => SafeExecute(() => Test(0, 0), out exception)); thread.Start(); ... Console.WriteLine(exception);
Dengan melaksanakan teknik ini, anda boleh mengendalikan pengecualian yang dilemparkan dalam urutan yang berbeza dengan berkesan, memastikan aplikasi anda terus beroperasi dengan pasti walaupun di hadapan daripada ralat yang tidak dijangka.
Atas ialah kandungan terperinci Bagaimana Berkesan Mengendalikan Pengecualian daripada Benang Berasingan dalam .NET?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!