线程的未捕获异常UncaughtException应该如何处理?
为什么需要UncaughtExceptionHandler?
- 主线程可以轻松发现异常,子线程却不行;
- 子线程异常,无法用传统方法进行捕获;
代码演示:
/** 单线程,抛出,处理,有异常堆栈
多线程,子线程发送异常,会有什么不同
* */
public class ExceptionInChildThread implements Runnable{
@Override
public void run() {
throw new RuntimeException();
}
public static void main(String[] args) {
new Thread(new ExceptionInChildThread()).start();
for(int i = 0; i < 1000; i++){
System.out.println(i);
}
}
}
输出:
1.不加try catch 抛出4个异常,都带线程名字;
2.加了try catch,期望捕获到第一个线程的异常,线程234不应该运行,希望看到打印出Caught