zoukankan      html  css  js  c++  java
  • 多线程的异常处理

    原则:

    线程都不应该抛出未捕获的exception(有矛盾在自己家解决,别人哪有时间管你家吵架!)

    也就是说各个线程需要自己把自己的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); } }

     

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

  • 相关阅读:
    vue-router路由
    前端路由与后端路由
    getsupportfragmentmanager 没有这个方法
    Glide使用
    Android使用Glide加载Gif.解决Glide加载Gif非常慢问题
    电脑卡,eclipse Android stadio 卡,什么都卡解决方法
    Service IntentService区别 (面试)
    枚举
    Android stadio litepal
    Android 单元测试
  • 原文地址:https://www.cnblogs.com/gougou1981/p/12332955.html
Copyright © 2011-2022 走看看