java 捕获线程里抛出的异常
来源:互联网 发布:室内设计软件手机版 编辑:程序博客网 时间:2024/05/18 21:40
import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent.ThreadFactory;class ExceptionThread2 implements Runnable {@Overridepublic void run() {Thread t =Thread.currentThread();System.out.println("run by" + t);System.out.println("eh = " + t.getUncaughtExceptionHandler());throw new RuntimeException();}}class MyUncaughtExeceptionHandler implements Thread.UncaughtExceptionHandler{@Overridepublic void uncaughtException(Thread arg0, 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);//t.setUncaughtExceptionHandler(new MyUncaughtExeceptionHandler());//System.out.println("eh =" + t.getUncaughtExceptionHandler());//return t;//}////}public class CaptureUncaughtException{public static void main(String[] args){ExecutorService exec= Executors.newCachedThreadPool();Thread t =new Thread(new ExceptionThread2());System.out.println("created " + t);t.setUncaughtExceptionHandler(new MyUncaughtExeceptionHandler());System.out.println("eh =" + t.getUncaughtExceptionHandler());exec.execute(t);}}
上面这段代码为什么捕获不了,裘高手解答。
另外一种方法通过ThreadGroup 捕获
public class ApplicationLoader extends ThreadGroup { private ApplicationLoader() { super("ApplicationLoader"); } public static void main(String[] args) { Runnable appStarter = new Runnable() { public void run() { //invoke your application (i.e.MySystem.main(args) throw new NullPointerException(); //example, throw a runtime exception } }; new Thread(new ApplicationLoader(), appStarter).start(); } //We overload this method from our parent //ThreadGroup , which will make sure that it //gets called when it needs to be. This is //where the magic occurs. public void uncaughtException(Thread thread, Throwable exception) { //Handle the error/exception. //Typical operations might be displaying a //useful dialog, writing to an event log, etc. exception.printStackTrace();//example, print stack trace } }
- java 捕获线程里抛出的异常
- 【捕获Java线程池执行任务抛出的异常】
- 捕获Java线程池执行任务抛出的异常
- runnable的线程抛出异常无法捕获
- java异常的捕获与抛出原则
- Java异常的捕获和抛出
- java异常的捕获与抛出原则
- Java- 异常的抛出与捕获
- java异常的捕获与抛出原则
- java异常的捕获与抛出原则
- 【Java 多线程】Java中主线程如何捕获子线程抛出的异常
- [转]Java中主线程如何捕获子线程抛出的异常
- Java编程时主线程如何捕获子线程抛出的异常
- Java中主线程如何捕获子线程抛出的异常
- 页面捕获抛出的异常
- JAVA捕获异常与抛出异常
- jni异常,c++抛出异常,java捕获
- [JAVA]运用反射机制,抛出的异常的捕获方法
- MySQL float,double,decimal数据类型区别
- 数据库分页语句
- java中HashMap详解
- Linux ALSA声卡驱动之八:ASoC架构中的Platform
- 鄙人最新作,购物车程序完善版
- java 捕获线程里抛出的异常
- android developers website
- 论坛,你不能这么对我。。。
- windows phone (19) 深入了解TextBlock
- ajax常识
- ORA-01081: "cannot start already-running ORACLE - shut it down first"
- PackageManager启动另一程序,web技术小结
- linux下mysql(rpm)安装使用手册
- 关于android3.0及以后版本访问webService的问题