try-with-resources

try-with-resources句はリソースのクローズ処理を自動で行う構文です。

try-with-resourcesについて

try-with-resources句はJava7で導入された構文です。
try-with-resourcesを使用することでリソースを自動的に開放・クローズしてくれるため、ソースコードを簡潔に書くことができます。
また、リソースのクローズ忘れによるバグの発生を防げます。

try-with-resourcesで自動クローズさせたいリソースは、AutoCloseableインターフェースを実装しているクラスである必要があります。

try-with-resources構文

以下、try-with-resourcesの基本的な構文です。

try (リソースの宣言) { // リソースを使用した処理 } catch (例外クラス1 変数名1) { // 例外1の処理 } finally { // 必要に応じてfinallyブロックで追加の処理を行う }
【try-with-resources句のブロック】
ブロック解説
tryリソースを使用する処理を記述します。例外が発生した場合は処理が中断され、対応するcatchブロックが実行されます。
カッコ内には自動クローズしたいリソースを指定します。
(AutoCloseableインターフェースを実装している必要あり)
catchtryブロックで発生した例外をキャッチし処理を行います。複数のcatchブロックを使用して例外毎の処理を記述することもできます。
リソースの自動クローズ時に例外が発生した場合もここのcatch句で処理されます。
finally例外の発生有無に関わらず必ず実行したい処理を記述します。
try-catch-finally句ではリソースのクローズ処理をここに記載しますが、
try-with-resource句では自動的にクローズしてくれるので記述不要です。

try-with-resourcesサンプル

(try-with-resourcesでリソースにBufferedReaderを指定する例)

try (BufferedReader reader = new BufferedReader(new FileReader("example.txt"))) {
  String line;
  while ((line = reader.readLine()) != null) {
    System.out.println(line);
  }
} catch (IOException e) {
  // IOExceptionの例外処理
}

上記例ではBufferedReaderオブジェクトは処理終了後に自動的にクローズされます。
もしリソースの解放時に例外が発生した場合はcatchブロックで処理されます。

try-with-resourcesまとめ

  • Java7で導入された構文
  • リソースを自動的にクローズしてくれる仕組みである
  • クローズ処理に対する例外処理を記述しなくてよいため、コードがシンプルになる
  • 指定できるリソースはAutoCloseableインターフェースを実装している必要がある
  • リソースのクローズ時に例外が発生した場合は、catch句で処理される

コメント

タイトルとURLをコピーしました