首页 新闻 会员 周边

如何捕获async回调方法中的异常?

0
悬赏园豆:10 [已解决问题] 解决于 2019-04-29 17:27

代码如下:

    class Program
    {


        static void Test(Func<int, Task> callback)
        {
            try
            {
                callback.Invoke(1);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);//进不到这里,所以不会打印出异常信息
            }

        }


        static void Main(string[] args)
        {

            Test(async n =>
            {
                throw new Exception("abc");//这里抛出的异常将捕获不到
                await Task.CompletedTask;
            });


            Console.WriteLine("OK");
            Console.ReadLine();


        }

    }

请问在这样的场景中,如何捕获回调方法中出现的异常呢?谢谢大神.

hexllo的主页 hexllo | 菜鸟二级 | 园豆:318
提问于:2019-04-29 17:04
< >
分享
最佳答案
0

少了 Wait()

static void Test(Func<int, Task> callback)
{
    try
    {
        callback.Invoke(1).Wait();
    }
    catch (Exception ex)
    {
        Console.WriteLine(ex.Message); //可以打印出异常信息
    }
}
收获园豆:10
dudu | 高人七级 |园豆:31003 | 2019-04-29 17:13

谢谢大神

hexllo | 园豆:318 (菜鸟二级) | 2019-04-29 17:28
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册