码迷,mamicode.com
首页 > 编程语言 > 详细

捕获Java线程池执行任务抛出的异常

时间:2014-07-24 21:57:42      阅读:246      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   java   color   strong   io   re   

捕获Java线程池执行任务抛出的异常
Java中线程执行的任务接口java.lang.Runnable 要求不抛出Checked异常,
  public interface Runnable {
  public abstract void run();

  }
  那么如果 run() 方法中抛出了RuntimeException,将会怎么处理了?
  通常java.lang.Thread对象运行设置一个默认的异常处理方法:
  java.lang.Thread.setDefaultUncaughtExceptionHandler(UncaughtExceptionHandler)
   而这个默认的静态全局的异常捕获方法时输出堆栈。
  当然,我们可以覆盖此默认实现,只需要一个自定义的java.lang.Thread.UncaughtExceptionHandler接口实现即可。
  public interface UncaughtExceptionHandler {
  void uncaughtException(Thread t, Throwable e);
  }

  而在线程池中却比较特殊。默认情况下,线程池 java.util.concurrent.ThreadPoolExecutor 会Catch住所有异常, 当任务执行完成(java.util.concurrent.ExecutorService.submit(Callable))获取其结果 时(java.util.concurrent.Future.get())会抛出此RuntimeException。

 

 

http://blog.sina.com.cn/s/blog_8839cbea0101f5wa.html

捕获Java线程池执行任务抛出的异常,布布扣,bubuko.com

捕获Java线程池执行任务抛出的异常

标签:style   blog   http   java   color   strong   io   re   

原文地址:http://www.cnblogs.com/softidea/p/3865965.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!