首页 > 编程语言 > 详细

多线程的异常处理

时间:2020-02-19 20:55:26      阅读:51      评论:0      收藏:0      [点我收藏+]

原则:线程都不应该抛出未捕获的exception,也就是说各个线程需要自己把自己的checked exception处理掉

话不多说,直接看代码

     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!"); } Console.Read(); } static void BadFaultyThread() { Console.WriteLine("Starting a faulty 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("Boom!"); } catch (Exception ex) { Console.WriteLine("Exception handled: {0}", ex.Message); } }

 

再来看一下,下面的运行结果就明白了

技术分享图片

 

多线程的异常处理

原文:https://www.cnblogs.com/gougou1981/p/12332955.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!