異常處理一直是所有編程語言不可避免需要考慮的問題,C 的非同步方法的異常處理和同步方法並無差別,同樣要藉助 try catch 語句捕獲異常。 首先編寫一個拋出異常的方法 常見的 try catch 處理語句。 async Task方法的異常存儲在Task對象中,Task有一個Exception屬性。 ...
異常處理一直是所有編程語言不可避免需要考慮的問題,C#的非同步方法的異常處理和同步方法並無差別,同樣要藉助 try catch 語句捕獲異常。
首先編寫一個拋出異常的方法
static async Task ThrowExceptionAsync()
{
await Task.Delay(TimeSpan.FromSeconds(1));
throw new InvalidOperationException("Test");
}
常見的 try catch 處理語句。
static async Task TestAsync()
{
try
{
await ThrowExceptionAsync();
}
catch (InvalidOperationException) { }
}
async Task方法的異常存儲在Task對象中,Task有一個Exception屬性。當Task對象被await調用時,才會引發異常。
static async Task TestAsync()
{
// 拋出異常並將其存儲在 Task 中。
Task task = ThrowExceptionAsync();
try
{
// Task 對象被 await 調用,異常在這裡再次被引發。
await task;
}
catch (InvalidOperationException)
{
// 這裡,異常被正確地捕獲。
}
}