以下程序
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)
这两个控制台打印之间有什么区别?
答案 0 :(得分:0)
要了解它们之间的区别,首先我们必须了解“如果未在Java中处理异常,会发生什么情况”。
您可以参考https://www.javamex.com/tutorials/exceptions/exceptions_uncaught_handler.shtml来理解它。
根据上面的引用,我们可以看出这里没有重大区别,因为问题的第二部分也将要求堆栈跟踪,但是将在其后缀线程名称。
答案 1 :(得分:0)
两者之间的区别在于,在第一个示例中,您捕获了异常并打印了异常堆栈跟踪。打印后,您的程序将继续正常运行(在这种情况下:退出)。
在第二个示例中,您没有捕获异常,当前正在运行的线程(主线程)突然结束(在您的代码中,该线程也结束了程序),并且该线程的未捕获异常处理程序打印了带有前缀的异常文本'线程“ main”中的异常'。