上級 › finally の return が結果を上書きする問題 › パターン4
finally の return が結果を上書きする問題
finallyでreturnを書いてはいけない理由と、try-with-resourcesによる安全なリソース解放を扱います。
1 public class Main { 2 static void f() { 3 try { 4 throw new RuntimeException("try-error"); 5 } finally { 6 ____________________________________________ ^ 7 } 8 } 9 public static void main(String[] args) { 10 f(); 11 } 12 }
Exception in thread "main" java.lang.RuntimeException: finally-errorexited with code 1(try-errorではなくfinally-errorが伝播する)
空欄を埋めてビルドを通す
finallyの中で例外を投げると、tryで発生した元の例外は握りつぶされ、finallyの例外だけが伝わります。
次の問題