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 { // ここにリソース解放の処理を記載 } }
リソース解放を意識しなくて済むってことかな?
例外処理発生時にどうするかとか、考えながら実装しないとね。
まだよくわかってないので、また勉強しようっと。