java异常跟踪

时间:2010-06-21 13:48:59

标签: java exception-handling

当我执行以下代码时,我看到输出为:

  

最后

     

线程“main”java.lang.NullPointerException中的异常           在ClientTestConcepts.main(ClientTestConcepts.java:9)

谁打印大胆的陈述。

public class ClientTestConcepts {
    public static void main(String []args){
        try{
            throw new NullPointerException();
        }
        finally{
            System.out.println("Finally");
        }
    }
}

2 个答案:

答案 0 :(得分:7)

Java运行时。

它捕获用户代码中未处理的所有异常,并将其打印在错误输出上(默认情况下)。

答案 1 :(得分:3)

每个线程都有一个默认的未捕获异常处理程序,该异常处理程序在异常使其到达堆栈顶部时运行。您正在观察的那个由ThreadGroup.uncaughtException提供:

  

当此线程组中的线程因未捕获的异常而停止时,由Java虚拟机调用,并且该线程没有安装特定的Thread.UncaughtExceptionHandler。

     

ThreadGroup的uncaughtException方法执行以下操作:(...)
      ...包含线程名称的消息(从线程的getName方法返回)和使用Throwable的printStackTrace方法的堆栈回溯打印到标准错误流。

如果您想要其他行为,请为该线程注册未捕获的异常处理程序。