リソースのクリーンアップには finally ブロックを使用しましょう


finally ブロックは、try-catch-finally 文の一部として使用されます。このブロックは、例外が発生しても発生しなくても、必ず実行されるコードを含みます。リソースのクリーンアップには、finally ブロックを使用することで、確実にリソースを解放することができます。

以下に、リソースのクリーンアップに関するいくつかの一般的なシナリオと、それぞれのシナリオでの finally ブロックの使用方法を示します。

  1. ファイルのクローズ:

    FileInputStream fis = null;
    try {
       fis = new FileInputStream("ファイルパス");
       // ファイルの読み込み処理
    } catch (IOException e) {
       // 例外処理
    } finally {
       if (fis != null) {
           try {
               fis.close();
           } catch (IOException e) {
               // クローズの例外処理
           }
       }
    }
  2. データベース接続のクローズ:

    Connection conn = null;
    try {
       conn = DriverManager.getConnection("接続情報");
       // データベース操作
    } catch (SQLException e) {
       // 例外処理
    } finally {
       if (conn != null) {
           try {
               conn.close();
           } catch (SQLException e) {
               // クローズの例外処理
           }
       }
    }
  3. リソースのロックの解放:

    Lock lock = new ReentrantLock();
    try {
       lock.lock();
       // ロックを取得した後の処理
    } finally {
       lock.unlock();
    }

上記の例では、finally ブロックを使用してリソースを解放する方法を示しています。finally ブロックは、例外が発生するかどうかにかかわらず、必ず実行されるため、リソースの解放が確実に行われます。

以上のように、finally ブロックを使用することで、リソースのクリーンアップを確実に行うことができます。これにより、プログラムの安定性とメモリ使用量の最適化が実現されます。