try-with-resourcesについて

Javaにおけるtry-with-resources文は、リソースを効率的に管理するための構文です。
この構文を使用すると、tryブロック内でリソースを初期化し、処理が終了した後に自動的にクリーンアップされます。
これにより、リソースの明示的なクローズや解放を忘れることなく、例外が発生した場合でも確実にリソースが解放されます。

実装例

try (リソースの初期化) {
    // リソースを使用するコード
} catch (例外クラス1 変数1) {
    // 例外処理
} catch (例外クラス2 変数2) {
    // 例外処理
} finally {
    // クリーンアップコード
  hogehoge.close();
}

この構文では、tryブロックの開始時にリソースを初期化します。リソースは、通常は自動的にクローズまたは解放されるCloseableまたはAutoCloseableインターフェースを実装するオブジェクトです。
リソースの初期化は、通常はtryブロック内のステートメントとして行われます。

tryブロック内でリソースを使用するコードを記述します。例外が発生しない場合でも、tryブロックの終了時にリソースは自動的にクローズされます。

catch節では、発生した例外を処理するコードを記述します。複数のcatch節を使用して、異なる例外クラスに対する処理を指定できます。

finally節では、クリーンアップコードを記述します。finally節は、例外の発生の有無にかかわらず、必ず実行されます。主な目的はリソースの解放などのクリーンアップ作業です。

ファイルの読み込みを例としたtry-with-resources文の使用例です。

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

この例では、BufferedReaderをtryブロック内で初期化し、ファイルを読み込んでいます。
ファイルの読み込みが終了すると、自動的にBufferedReaderはクローズされます。また、IOExceptionが発生した場合はcatch節で処理されます。

参考文献

https://docs.oracle.com/javase/jp/7/technotes/guides/language/try-with-resources.html

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です