捕捉單獨執行緒中拋出的例外狀況
在多執行緒應用程式中,處理單獨執行緒中發生的例外狀況至關重要。本指南將示範實現此目的的兩種方法。
.NET 4 及更高版本中基於任務的例外處理
考慮使用 Task
Task<int> task = new Task<int>(Test); task.ContinueWith(ExceptionHandler, TaskContinuationOptions.OnlyOnFaulted); task.Start(); ... static void ExceptionHandler(Task<int> task) { Console.WriteLine(task.Exception.Message); }
Task<int> task = new Task<int>(Test); task.Start(); try { task.Wait(); } catch (AggregateException ex) { Console.WriteLine(ex); }
.NET 3.5 中的異常處理
對於 .NET 3.5,請考慮以下方法:
Exception exception = null; Thread thread = new Thread(() => Test(0, 0)); thread.Start(); thread.Join(); if (exception != null) Console.WriteLine(exception);
Exception exception = null; Thread thread = new Thread(() => { try { Test(0, 0); } catch (Exception ex) { lock (exceptionLock) { exception = ex; } } }); thread.Start(); thread.Join(); if (exception != null) Console.WriteLine(exception);
以上是如何從 .NET 中的單獨執行緒捕獲異常?的詳細內容。更多資訊請關注PHP中文網其他相關文章!