Tag: uncaughtexceptionhandler

是否吞噬了UncaughtExceptionHandler中抛出的错误?

Thread.UncaughtExceptionHandler声明当处理未捕获的exception的方法本身抛出exception时,该exception将被忽略: void uncaughtException (Thread t,Throwable e): 当给定线程由于给定的未捕获exception而终止时调用的方法。 Java虚拟机将忽略此方法抛出的任何exception。 但是当我测试它时,JVM没有忽略未捕获的exception处理程序处理的exception: public static void main(final String args[]) { Thread.currentThread().setUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() { @Override public void uncaughtException(Thread arg0, Throwable arg1) { throw new java.lang.RuntimeException(“e2”); } }); throw new RuntimeException(“e1”); } Eclipse控制台输出(JRE 1.7): exception:从线程“main”中的UncaughtExceptionHandler抛出java.lang.RuntimeException 我发现的另一个奇怪的是我得到的输出不是来自System.err 。 它似乎完全来自另一个流。 我通过将System.err重定向到System.out来validation这一点,但我仍然得到“红色”输出: public static void main(final String[] args) { System.setErr(System.out); System.out.println(System.err == System.out); System.err.println(“this […]

Spring Async Uncaught Exception处理程序

@Override @Async public void asyncExceptionTest() { int i=1/0; } 如何使用Spring Async框架进行日志记录,而不必在每个异步方法中放置try catch? 它似乎没有像普通的那样传递给DefaultUncaughtExceptionHandler 。