Java多线程之捕获异常
来源:互联网 发布:淘宝产品分类 编辑:程序博客网 时间:2024/06/06 07:12
1.主线程不能捕获到子线程的异常
3.通过设置默认异常捕获类捕获异常
输出
package Thread.Exection;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;public class ExeceptionThread implements Runnable { @Override public void run() { throw new RuntimeException(); } public static void main(String[] args) { try { ExecutorService exec = Executors.newCachedThreadPool(); exec.execute(new ExeceptionThread()); } catch (Exception e) { System.out.println("exeception has handled"); } }}
输出
Exception in thread "pool-1-thread-1" java.lang.RuntimeException at Thread.Exection.ExeceptionThread.run(ExeceptionThread.java:10) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source)2.通过设置HandlerThreadFactory捕获异常
package Thread.Exection;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent.ThreadFactory;class ExceptionThread2 implements Runnable { public void run() { Thread t = Thread.currentThread(); System.out.println("run() by " + t); System.out.println("eh=" + t.getUncaughtExceptionHandler()); throw new RuntimeException(); }}class MyUncaughtExceptionHandler implements Thread.UncaughtExceptionHandler { @Override public void uncaughtException(Thread t, Throwable e) { System.out.println("caught " + e); }}class HandlerThreadFactory implements ThreadFactory { @Override public Thread newThread(Runnable r) { System.out.println(this + " creating new Thread"); Thread t = new Thread(r); System.out.println("created " + t + " ID:" + t.getId()); t.setUncaughtExceptionHandler(new MyUncaughtExceptionHandler()); System.out.println("eh=" + t.getUncaughtExceptionHandler()); return t; }}public class CaptureUncaughtException { public static void main(String[] args) { ExecutorService exec = Executors .newCachedThreadPool(new HandlerThreadFactory()); exec.execute(new ExceptionThread2()); }}输出
Thread.Exection.HandlerThreadFactory@4e25154f creating new Threadcreated Thread[Thread-0,5,main] ID:9eh=Thread.Exection.MyUncaughtExceptionHandler@70dea4erun() by Thread[Thread-0,5,main]eh=Thread.Exection.MyUncaughtExceptionHandler@70dea4eThread.Exection.HandlerThreadFactory@4e25154f creating new Threadcreated Thread[Thread-1,5,main] ID:11eh=Thread.Exection.MyUncaughtExceptionHandler@193fa958caught java.lang.RuntimeException
3.通过设置默认异常捕获类捕获异常
package Thread.Exection;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;public class SettingDefaultHandler { public static void main(String[] args) { Thread.setDefaultUncaughtExceptionHandler( new MyUncaughtExceptionHandler()); ExecutorService exec=Executors.newCachedThreadPool(); exec.execute(new ExceptionThread2()); }}
输出
run() by Thread[pool-1-thread-1,5,main]eh=java.lang.ThreadGroup[name=main,maxpri=10]caught java.lang.RuntimeException
0 0
- java多线程之捕获异常
- Java多线程之捕获异常
- Java多线程之捕获异常
- java多线程异常捕获
- java 多线程异常捕获
- Java多线程捕获异常
- Java多线程-捕获线程异常
- java多线程编程之捕获子线程异常示例
- java多线程编程之捕获子线程异常示例
- Java多线程之捕获子线程中的异常
- java面试之异常捕获
- Java异常捕获之finally
- 多线程之捕获异常(五)
- 多线程:Java 线程中的异常捕获
- Java 多线程异常捕获Runnable实现
- java之异常的捕获及处理
- java之异常捕获及处理
- java核心技术卷 之捕获异常
- MySQL学习笔记2---MySQL数据库的存储引擎和数据类型
- Java文件下载结合多线程
- 网格去噪算法(two-step framework)
- 动态规划-多阶段决策问题
- iOS 导出证书.p12文件
- Java多线程之捕获异常
- 单调队列
- Annotation(三)——Spring注解开发
- 后期生成事件之拷贝生成后的dll
- 第二课的课后练习
- android.graphics.Paint方法setXfermode (Xfermode x...
- liunx c语言制作 微型web服务器 300行代码
- 动态规划的基本概念和最优化原理
- CAS (5) —— Nginx代理模式下浏览器访问CAS服务器配置详解