try-catch-finally実行順序まとめ
3475 ワード
1、異常がない場合、tryの戻り値を一時領域に保存してからfinallyを実行します.このfinallyには戻り値があります.この戻り値は、前のtryの一時領域に保存した値を戻りのこの値で置き換え、この一時領域の値を前のレベルのメソッドに戻します.
2、異常がある場合、catchのコードを実行し、ここのreturnは戻り値を一時領域に戻し、finallyを実行します.このfinallyには戻り値があります.これにより、catchに一時領域が存在する値をこのfinallyが返した値に置き換え、この一時領域の値を前のレベルのメソッドに戻します.
結果:
正常な動作の場合test=21
case1: test =22
case2:test =10
case3:test =1
2、異常がある場合、catchのコードを実行し、ここのreturnは戻り値を一時領域に戻し、finallyを実行します.このfinallyには戻り値があります.これにより、catchに一時領域が存在する値をこのfinallyが返した値に置き換え、この一時領域の値を前のレベルのメソッドに戻します.
:
public class FileSystemTest{
public static void main(String[] args) {
System.out.println("test= "+test());
System.out.println("finish= ");
}
private static int test() {
int b =20;
try{
System.out.println("try");
return b+=1;
//case3
//return 1;
}catch(Exception e){
System.out.println("catch");
return 0;
}finally{
System.out.println("finally");
System.out.println("b= "+b);
b++;
//case1
//return b;
//case2
//return 10;
}
}
}
結果:
正常な動作の場合test=21
case1: test =22
case2:test =10
case3:test =1