1. ホーム
  2. java

catchとfinallyにおけるreturn文の動作

2023-09-29 23:13:49

質問

以下のコードを見て、出力の挙動を説明してください。

public class MyFinalTest {

    public int doMethod(){
        try{
            throw new Exception();
        }
        catch(Exception ex){
            return 5;
        }
        finally{
            return 10;
        }
    }

    public static void main(String[] args) {

        MyFinalTest testEx = new MyFinalTest();
        int rVal = testEx.doMethod();
        System.out.println("The return Val : "+rVal);
    }

}

その結果、Val : 10が返されます。

Eclipseでは警告が表示されます。 finally block does not complete normally .

catchブロックのreturn文はどうなるのでしょうか?

どのように解決するのですか?

の中のものが上書きされます。 finally なぜなら finally は他のすべてのものの後に実行されるからです。

そのため、経験則では - から戻ることはありません。 finally . 例えばEclipseでは、このスニペットに対して「"finally block does not complete normal"」という警告が表示されます。