美文网首页
异步编程(六):async/await模式之异常处理

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

作者: 曦航老袁 | 来源:发表于2019-02-24 20:57 被阅读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。

    相关文章

      网友评论

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

          本文链接:https://www.haomeiwen.com/subject/ueobyqtx.html