在C#中,使用Task時,可以通過使用try-catch
語句來捕獲和處理異常。當(dāng)在任務(wù)中發(fā)生異常時,該異常將被存儲在任務(wù)對象的Exception
屬性中。為了處理這些異常,你需要等待任務(wù)完成,然后檢查Exception
屬性。
以下是一個簡單的示例,展示了如何在C#中使用Task進(jìn)行異常處理:
using System;
using System.Threading.Tasks;
class Program
{
static async Task Main(string[] args)
{
Task task = Task.Run(() =>
{
// 這里是可能引發(fā)異常的代碼
throw new InvalidOperationException("An error occurred!");
});
try
{
await task;
}
catch (InvalidOperationException ex)
{
Console.WriteLine($"Caught exception: {ex.Message}");
}
catch (Exception ex)
{
Console.WriteLine($"Caught exception: {ex.Message}");
}
}
}
在這個示例中,我們創(chuàng)建了一個新的任務(wù),該任務(wù)會立即引發(fā)一個InvalidOperationException
異常。然后,我們使用await
關(guān)鍵字等待任務(wù)完成,并使用try-catch
語句捕獲異常。如果捕獲到InvalidOperationException
類型的異常,我們將打印出相應(yīng)的錯誤消息。如果捕獲到其他類型的異常,我們也會打印出相應(yīng)的錯誤消息。
請注意,如果任務(wù)已經(jīng)完成(無論是成功還是失?。?,那么在調(diào)用await
時不會阻塞線程。因此,在這種情況下,異常處理將立即發(fā)生。