C# Task中抛出异常后,后续流程没有执行

本文探讨了在C#中如何处理Task抛出的异常,并通过使用ContinueWith方法确保即使出现异常也能执行后续操作。文章提供了具体的代码示例来说明这一点。
        static void Main(string[] args)
        {
            var t = Task.Factory.StartNew(() =>
            {
                Console.WriteLine("1");
                Console.WriteLine("2");

                try
                {
                    Console.WriteLine("3");
                    string str = tt();
                    Console.WriteLine(str);
                    Console.WriteLine("4");
                }
                catch (Exception ex)
                {
                    Console.WriteLine("报错显示:{0}", ex);
                }

               
                Console.WriteLine("5");
                Console.WriteLine("6");

            });
            // tt方法报错后,进入catch中后,在没有ContinueWith时,下边的5、6不会执行.
            // 如果存在ContinueWith,则有所有流程正常执行
            t.ContinueWith(x =>
            {
                Console.WriteLine("关闭进程后执行1");
            });


            Console.WriteLine("关闭进程后执行2");
            Console.WriteLine("关闭进程后执行3");
            Console.WriteLine("完成");

            Console.ReadLine();
        }


        public static string tt()
        {
            throw new IndexOutOfRangeException();
        }

task中出现抛出异常后,后续流程不执行
添加ContinueWith后,所有流程正常执行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值