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
出力は常に期待どおり、または上記の 2 番目の出力 (2 行目の先頭) のように表示されました。
何が原因で、どうすれば解決できますか?