在C#中,异步方法中的异常处理与同步方法略有不同。当异步方法抛出异常时,它不会自动传播到调用者那里。为了处理这些异常,你需要使用async
和await
关键字,并使用try-catch
块来捕获异常。下面是一个示例:
using System;
using System.Threading.Tasks;
class Program
{
static async Task Main(string[] args)
{
try
{
await CallAsyncMethod();
}
catch (Exception ex)
{
Console.WriteLine($"Error: {ex.Message}");
}
}
static async Task CallAsyncMethod()
{
await Task.Delay(1000); // 模拟异步操作
throw new InvalidOperationException("An error occurred in the async method.");
}
}
在这个示例中,CallAsyncMethod
是一个异步方法,它抛出了一个异常。在Main
方法中,我们使用try-catch
块来捕获并处理这个异常。当CallAsyncMethod
抛出异常时,它会被catch
块捕获,并输出错误信息。