【发布时间】:2015-09-24 21:38:54
【问题描述】:
printStackTrace() 在等待输入后就像在自己的线程中运行一样。这是我的代码:
try {
new Scanner(System.in).nextLine();
throw new Exception();
} catch (Exception e) {
e.printStackTrace();
}
System.out.print("STUFF");
我有时会得到预期的输出(最后是 STUFF),但有时我会得到:
blabla // the scanner input
java.lang.ExceptionSTUFF
at Test.main(Test.java:7)
有时是这样的:
blabla
java.lang.Exception
STUFF at Test.main(Test.java:7)
将扫描仪替换为System.in.read() 会产生相同的结果。完全删除这条线会产生预期的结果。在我注意到这个问题的实际程序中,堆栈跟踪要长得多,STUFF 输出总是按预期出现或出现在上面的第二个输出中 - 在第二行的开头。
这是什么原因造成的,我该如何解决?
【问题讨论】:
标签: exception java.util.scanner printstacktrace