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.csdn.net/qq_35445058/article/details/80728819

你可能感兴趣的:(C#)