下面的程序
public class Test {
public static void main(String[] args) {
try
{
String t = null;
t.toString();
} catch(Exception e) {
e.printStackTrace();
}
}
}
在控制台中打印:
java.lang.NullPointerException at Test.main(Test.java:9)
和下面的程序
public class Test {
public static void main(String[] args) {
String t = null;
t.toString();
}
}
在控制台中打印:
在Test.main(Test.java:7)的线程"main“java.lang.NullPointerException中出现
异常
这两个控制台打印有什么不同?
发布于 2018-10-04 23:51:46
要了解其中的区别,首先我们必须了解“如果JAVA中没有处理异常会发生什么”。
你可以参考https://www.javamex.com/tutorials/exceptions/exceptions_uncaught_handler.shtml来理解它。
根据上面的引用,我们可以看出这里没有什么大的不同,因为你的问题的第二部分也会调用堆栈跟踪,但是线程名将会作为它的后缀。
发布于 2018-10-05 03:49:15
两者之间的区别在于,在第一个示例中,您捕获了异常并打印了异常堆栈跟踪。打印后,您的程序将继续正常运行(在本例中为:退出)。
在第二个示例中,您没有捕获异常,当前运行的线程(主线程)突然结束(在您的代码中也结束了程序),并且线程的未捕获的异常处理程序将打印前缀为“exception in thread " main”“的异常。
https://stackoverflow.com/questions/52648247
复制相似问题