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
输出总是按预期出现或出现在上面的第二个输出中 - 在第二行的开头。
这是什么原因造成的,我该如何解决?