以下のコード スニペットでは、printStackTrace()メソッドは で呼び出されますcatch block。プログラムを実行すると、 が--> -->printStackTrace()の順に実行されるのではなく、連続して数回実行されることがあります。printStackTrace()catch blockfinally 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();
}
}
}