tryと言ったらcatch。
catchと言ったらfinally。
所謂Java的常識が、また変わるのか。
今度はtry-with-resources。
finally句の使用は、主にリソースの解放等に使われている。
tryはresourcesと共に・・・。そういうことか!
今までのリソース解放はこんな感じだったはず。
// JavaSE6
// Connectionを解放する。
Class.forName("ドライバ名");
Connection conn =
DriverManager.getConnection(
"URL", //URL
"ユーザ名", //ユーザID
"パスワード" //パスワード
);
try {
// なんか色々処理
catch (Exception e) {
System.err.println(e.getMessage());
} finally {
// コネクションをクローズ
if(null != conn) {
conn.close();
}
}
Connection.close()メソッドでもtry-catchしたかな?
それを、こうできる。
// JavaSE7
// Connectionを解放する。
Class.forName("ドライバ名");
try (Connection conn =
DriverManager.getConnection(
"URL", //URL
"ユーザ名", //ユーザID
"パスワード" //パスワード
)){
// なんか色々処理
catch (Exception e) {
System.err.println(e.getMessage());
}
これで解放されるらしい。
Connectionはされないのかな?そこはまた調べよう。
AutoCloseableというインターフェースの機能が発動するらしい。
独自クラスだと、上記を実装すればいい。
public class Sample implements AutoCloseable {
/**
* Sampleクラスのリソース解放処理
*/
@Override
public void close() throws Exception {
// ここにリソース解放の処理を記載
}
}
リソース解放を意識しなくて済むってことかな?
例外処理発生時にどうするかとか、考えながら実装しないとね。
まだよくわかってないので、また勉強しようっと。


