例えば、Socketクラス等を使う場合はtry-catch内でリソースを使って
finally句でcloseをする必要があるんですが、このcloseメソッドが大抵
IOException等を投げてきてくれるんで、finally句で更なるtry-catchで
ネストをしていく事になります。 Socket hoge = null;
try {
hoge = new Socket();
System.out.println(hoge);
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
hoge.close();
} catch (Exception e) {
e.printStackTrace();
}
}
これが、Java7のtry-with-resourcesで記述するとこんな感じに。
try (Socket hoge = new Socket();) {
System.out.println(hoge);
} catch (Exception e) {
e.printStackTrace();
}
System.out.println(hoge);
} catch (Exception e) {
e.printStackTrace();
}
うん、便利!
close()メソッド自体はtry-catchを抜ける際に自動で呼び出されるみたいです。
あと、try-with-resourcesで使えるリソースは、以下のInterfaceを実装している必要が
あるみたいです。
- java.lang.AutoCloseable
- java.io.Closeable
使用される方は、対象のリソースが上記Interfaceを実装したクラスなのか
注意してください。
0 件のコメント:
コメントを投稿