try catch finallyの実行順序についての疑問
1252 ワード
public class TryCatchOrder {
public static void main(String[] args) {
System.out.println(new TryCatchOrder().test());
}
static int i = 0;
public int test() {
try {
System.out.println(" !");
throw new Exception();
} catch (Exception e) {
System.out.println(" catch !");
return ++i;
} finally {
System.out.println(" finally !");
++i;
}
}
}
出力:1
public class TryCatchOrder {
public static void main(String[] args) {
System.out.println(new TryCatchOrder().test());
}
static int i = 0;
public int test() {
try {
System.out.println(" !");
throw new Exception();
} catch (Exception e) {
System.out.println(" catch !");
return ++i;
} finally {
System.out.println(" finally !");
return ++i;
}
}
}
出力:2
デバッグした結果、最初の例の実行順序はcatch--finally--catch、2番目の例の実行順序はcatch--finallyであることがわかりました.
なぜ最初の例の出力が1なのか、まだ少し分かりません.