当一个线程因为未捕获的异常而退出时,JVM会将这个异常交给UncaughtExceptionHandler(异常处理器)来处理,如何没有设置异常处理器,会将异常信息输出到System.err。多线程环境下,其他线程仍然在输出日志,System.err输出的异常信息很可能被忽略。可以通过设置UncaughtExceptionHandler,将未捕获的异常信息保存到指定的日志文件中。
1.首先实现Thread.UncaughtExceptionHandler接口
package com.yuanyk.uncaughtExceptionHandler;
public class MyUncaughtExceptionHandler implements Thread.UncaughtExceptionHandler {
@Override
public void uncaughtException(Thread t, Throwable e) {
System.out.println("thread-->"+t.getName()+" get uncCatchException:"+e.getMessage());
}
}
2.测试Thread.start()
private static void testThread(){
Thread t = new Thread(() -> {
int i = 1/0;
});
t.setName("test thread");
t.start();
}
此时没有设置UncaughtExceptionHan