如果直接调用Thread.getUncaughtExceptionHandler()。uncaughtException会发生什么坏事?

时间:2013-04-03 19:55:29

标签: java exception-handling

将已检查的异常直接放入UncaughtExceptionHandler会产生什么负面影响?

        Thread t = new Thread() {

            @Override
            public void run() {
                try {
                    verb();
                } catch (Exception e) {
                    getUncaughtExceptionHandler().uncaughtException(this,e);
                }
            }
        };

显然,应用程序会产生(应该是)后果 - 无论谁写了动词(),都认为应该处理这种特殊情况。假设我愿意忽略这一点,还会出现什么问题?

在线程即将终止之前调用ExceptionHandler 会有什么后果吗?

1 个答案:

答案 0 :(得分:1)

不应该有负序 如果您没有明确设置自定义处理程序,那么ThreadGroup方法将是 叫which

  

此方法确定Throwable参数是否为实例   的ThreadDeath。如果是这样,没有什么特别的。否则,一条消息   包含线程名称,从线程的getName返回   方法和堆栈回溯,使用Throwable的printStackTrace   方法,打印到标准错误流。

如果您已设置自定义,则最有可能的是它只会记录某些内容。所以你只会看到线程和堆栈跟踪的日志 除非您的自定义处理程序执行某些特定的操作,只有当线程终止时才应该执行,但是从OP开始,似乎情况并非如此。