
您可以为控制上述代码的线程设置UncaughtExceptionHandler:
// t is the parent pre threadt.setUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() { public void uncaughtException(Thread t, Throwable e) { LOGGER.error(t + " throws exception: " + e); } });UncaughtExceptionHandler的
Java文档-
当线程由于未捕获的异常而即将终止时,Java虚拟机将使用Thread.getUncaughtExceptionHandler()向线程查询其UncaughtExceptionHandler并将调用处理程序的uncaughtException方法,并将线程和异常作为参数传递
setUncaughtExceptionHandler通常用于释放内存或杀死系统将无法杀死甚至可能保持僵尸状态的线程。
一个真实的例子:
Thread t = new Thread(new MyRunnable());t.setUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() { public void uncaughtException(Thread t, Throwable e) { LOGGER.error(t + " throws exception: " + e); }});t.start();//outside that classclass MyRunnable implements Runnable(){ public void run(){ throw new RuntimeException("hey you!"); }}欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)