Java 线程异常处理器
2016-03-25 12:31
330 查看
Thread.UncaughtExceptionHandler 是Thread类的一个静态内部接口,该接口只有一个方法:
void uncaughtException(Thread t, Throwable e),其中t代表出现异常的线程,e代表抛出的异常。
如果线程执行过程中抛出了一个未处理的异常,则会在线程结束前找到对应的未处理异常处理器,调用上面的方法,处理该异常。
Thread 类提供了两个方法用来设置异常处理器
static setDefaultUncaughtExceptionHandler(Thread.UncaughtExceptionHandler eh) 为该线程类的所有对象都设置默认的异常处理器。
setUncaughtExceptionHandler(Thread.UncaughtExceptionHandler eh) 为指定的线程对象设置异常处理器。
示例如下:
执行结果
由上可以看出,与catch不同的是,异常处理器处理异常后,程序并不会继续执行,所以也不会正常结束。
void uncaughtException(Thread t, Throwable e),其中t代表出现异常的线程,e代表抛出的异常。
如果线程执行过程中抛出了一个未处理的异常,则会在线程结束前找到对应的未处理异常处理器,调用上面的方法,处理该异常。
Thread 类提供了两个方法用来设置异常处理器
static setDefaultUncaughtExceptionHandler(Thread.UncaughtExceptionHandler eh) 为该线程类的所有对象都设置默认的异常处理器。
setUncaughtExceptionHandler(Thread.UncaughtExceptionHandler eh) 为指定的线程对象设置异常处理器。
示例如下:
public class UnCaughtExceptionHandlerTest { static class UnCaughtExceptionHandler implements Thread.UncaughtExceptionHandler{ @Override public void uncaughtException(Thread t, Throwable e) { System.out.println(t + " 异常:" + e); } } public static void main(String[] args) { Thread.currentThread().setUncaughtExceptionHandler(new UnCaughtExceptionHandler()); int a = 5 / 0; System.out.println("normal over!"); } }
执行结果
Thread[main,5,main] 异常:java.lang.ArithmeticException: / by zero
由上可以看出,与catch不同的是,异常处理器处理异常后,程序并不会继续执行,所以也不会正常结束。
相关文章推荐
- eclipse 快捷键
- Spring学习笔记(一)
- [Java并发包学习七]解密ThreadLocal
- hdu 神、上帝以及老天爷 java
- maven中下载jar包源码和javadoc
- Java 线程通信
- char可以存储汉字吗?| Java基础
- Java拾遗——存储位置
- Java day10 IO 列出文件下的所有层级文件名 待修改
- Java day10 递归
- Spring shiro使用
- 成为JAVA(高级)工程师,该学什么?
- Java DES 3DES AES Base64加密
- (java)统计小于N的数中素数的个数
- 在SpringMVC中获取request对象的几种方式
- eclipse编码格式设置教程、如何为eclipse设置编码格式?
- java 软引用、弱引用、强引用、虚引用的解析
- 我爱学Java之正则表达式
- javaweb学习总结(五)——Servlet开发(一)
- Java day10 IO FileWriter