首頁 >後端開發 >C++ >如何從 .NET 中的單獨執行緒捕獲異常?

如何從 .NET 中的單獨執行緒捕獲異常?

Linda Hamilton
Linda Hamilton原創
2025-01-05 06:54:39566瀏覽

How to Catch Exceptions from Separate Threads in .NET?

捕捉單獨執行緒中拋出的例外狀況

在多執行緒應用程式中,處理單獨執行緒中發生的例外狀況至關重要。本指南將示範實現此目的的兩種方法。

.NET 4 及更高版本中基於任務的例外處理

考慮使用 Task而不是建立新執行緒。對於Task,可以透過.Exceptions 屬性檢索異常。這裡有兩種方法:

  • 在單獨的方法中:
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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn