catch句の存在しないtry-catch-finally
こんな要件があった。
実装するには、メソッドBではExceptionをcatchせずにfinallyで残処理をやらせて、メソッドAでcatchさせればいい。
しかし、try-catch-finallyでfinallyを省略することはあっても、catchを省略することなんてあったか……そもそもできるのか?
試してみた。
Main.java
package sample; public class Main { public static void main(String[] args) { try{ throwException(); }catch(Exception e){ // 例外をここでcatch System.out.println("例外発生"); e.printStackTrace(); } } private static void throwException(){ int arr[] = new int[3]; try{ // 意図的にArrayIndexOutOfBoundsExceptionを発生させる arr[10] = 5; System.out.println("処理正常終了"); }finally{ // catchを書かずにfinally System.out.println("finally句に入りました"); } } }
実行結果
finally句に入りました 例外発生 java.lang.ArrayIndexOutOfBoundsException: 10 at sample.Main.throwException(Main.java:20) at sample.Main.main(Main.java:7)
できたできた。
けど、こういう書き方って普通しないのかなあ?
もっといい書き方があれば教えてください。