以下のコード スニペットでは、printStackTrace()
メソッドは で呼び出されますcatch block
。プログラムを実行すると、 が--> -->printStackTrace()
の順に実行されるのではなく、連続して数回実行されることがあります。printStackTrace()
catch block
finally block
を に変更するstatic boolean b
と、 が順番false
にSystem.out.print(e)
実行されます。
では、なぜ はprintStackTrace()
異なる方法で動作するのでしょうか? (スレッドで何か??)
public class PrintStackTrace {
static boolean b = true;
public static void main(String[] args){
for(int i = 0; i < 100; i++){
try{
throw new Exception("[" + i + "]");
}
catch(Exception e){
if(b){
e.printStackTrace();
}
else{
System.out.print(e);
}
System.out.print(" Catch: " + i);
}
finally{
System.out.print(" Finally: " + i);
}
System.out.println();
}
}
}