异步编程(六):async/await模式之异常处理

2019-02-24  本文已影响0人  曦航老袁

在异步编程的async/await模式下,将await表达式放在try语句之内,和平时的效果是一致的。例如:

class Program
{
    static void Main(string[] args)
    {
        Task t = BadAsync();
        t.Wait();
        Console.WriteLine("Task Status:     {0}", t.Status);
        Console.WriteLine("Task IsFaulted:  {0}", t.IsFaulted);
    }
    static async Task BadAsync()
    {
        try
        {
            await Task.Run(() => { throw new Exception(); });
        }
        catch
        {
            Console.WriteLine("Exception in BadAsync");
        }
    }
}

代码运行的结果如下:

Exception in BadAsync
Task Status:     RanToCompletion
Task IsFaulted:  False

注意,尽管Task抛出了一个Excption,在Main的最后,Task的状态仍然为RanToCompletion。原因是Task并没有被取消,同时也没有未处理的异常。类似地,IsFaulted的属性为False。

上一篇下一篇

猜你喜欢

热点阅读