C# 多线程之捕获异常(try...catch)

当主程序启动时,定义了两个将会抛出异常的线程。其中一个在方法内部对异常进行了处理,另一个则没有。可以看到第二个异常没有被包裹启动线程的try/catch代码块捕获到。所以如果直接使用线程,一般来说不要在线程中抛出异常,而是在线程内部代码中使用try/catch代码块! 

using System;

using System.Threading;

 

namespace 异常处理

{

    class Program

    {

        static void Main(string[] args)

        {

            var t = new Thread(FaultyThread);

            t.Start();

            t.Join();

            try

            {

                t = new Thread(BadFaultyThread);

                t.Start();

            }

            catch (Exception ex)

            {

                Console.WriteLine("We won't get here");

                

            }

        }

        static void BadFaultyThread()

        {

            Console.WriteLine("Starting a fault thread...");

            Thread.Sleep(TimeSpan.FromSeconds(2));

            throw new Exception("Boom");

        }

        static void FaultyThread()

        {

            try

            {

                Console.WriteLine("Starting a faulty thread...");

                Thread.Sleep(TimeSpan.FromSeconds(1));

                throw new Exception("Boom1");

            }

            catch (Exception ex)

            {

                Console.WriteLine("Exception handled: {0}", ex.Message);

            }

        }

    }

}

 原文地址:https://blog.youkuaiyun.com/qq_35445058/article/details/80728819

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值