异常处理一直是所有编程语言不可避免需要考虑的问题,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)
    {
        // 这里,异常被正确地捕获。
    }
}

相关文章:

  • 2021-08-30
  • 2021-08-19
  • 2021-07-28
  • 2021-08-06
  • 2022-12-23
猜你喜欢
  • 2021-08-18
  • 2021-06-14
  • 2022-01-26
  • 2021-12-09
  • 2022-01-28
  • 2021-12-09
相关资源
相似解决方案