Java程序中未处理异常的输出

时间:2018-10-04 13:40:30

标签: java exception exception-handling

以下程序

public class Test {

    public static void main(String[] args) {

        try
        {
            String t = null;
            t.toString();

        } catch(Exception e) {
            e.printStackTrace();
        }
    }
}

在控制台中打印:

  

Test.main(Test.java:9)上的java.lang.NullPointerException

以及以下程序

public class Test {

    public static void main(String[] args) {

        String t = null;
        t.toString();
    }

}

在控制台中打印:

  

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

这两个控制台打印之间有什么区别?

2 个答案:

答案 0 :(得分:0)

要了解它们之间的区别,首先我们必须了解“如果未在Java中处理异常,会发生什么情况”。

您可以参考https://www.javamex.com/tutorials/exceptions/exceptions_uncaught_handler.shtml来理解它。

根据上面的引用,我们可以看出这里没有重大区别,因为问题的第二部分也将要求堆栈跟踪,但是将在其后缀线程名称。

答案 1 :(得分:0)

两者之间的区别在于,在第一个示例中,您捕获了异常并打印了异常堆栈跟踪。打印后,您的程序将继续正常运行(在这种情况下:退出)。

在第二个示例中,您没有捕获异常,当前正在运行的线程(主线程)突然结束(在您的代码中,该线程也结束了程序),并且该线程的未捕获异常处理程序打印了带有前缀的异常文本'线程“ main”中的异常'