finally ブロックは、try-catch-finally 文の一部として使用されます。このブロックは、例外が発生しても発生しなくても、必ず実行されるコードを含みます。リソースのクリーンアップには、finally ブロックを使用することで、確実にリソースを解放することができます。
以下に、リソースのクリーンアップに関するいくつかの一般的なシナリオと、それぞれのシナリオでの finally ブロックの使用方法を示します。
-
ファイルのクローズ:
FileInputStream fis = null; try { fis = new FileInputStream("ファイルパス"); // ファイルの読み込み処理 } catch (IOException e) { // 例外処理 } finally { if (fis != null) { try { fis.close(); } catch (IOException e) { // クローズの例外処理 } } }
-
データベース接続のクローズ:
Connection conn = null; try { conn = DriverManager.getConnection("接続情報"); // データベース操作 } catch (SQLException e) { // 例外処理 } finally { if (conn != null) { try { conn.close(); } catch (SQLException e) { // クローズの例外処理 } } }
-
リソースのロックの解放:
Lock lock = new ReentrantLock(); try { lock.lock(); // ロックを取得した後の処理 } finally { lock.unlock(); }
上記の例では、finally ブロックを使用してリソースを解放する方法を示しています。finally ブロックは、例外が発生するかどうかにかかわらず、必ず実行されるため、リソースの解放が確実に行われます。
以上のように、finally ブロックを使用することで、リソースのクリーンアップを確実に行うことができます。これにより、プログラムの安定性とメモリ使用量の最適化が実現されます。