モジュール java.base
パッケージ java.lang

インタフェースAutoCloseable

    • メソッドの詳細

      • close

        void close()
            throws Exception
        このリソースを閉じ、ベースとなるリソースをすべて解放します。 このメソッドは、try-with-resources文で管理されているオブジェクトで自動的に呼び出されます。

        このインタフェース・メソッドは Exceptionをスローするように宣言されていますが、実装者には、closeメソッドの具象実装を宣言する際に、より具体的な例外をスローするか、またはクローズ処理で失敗できない場合は例外を一切スローしないことを強くお薦めします。

        クローズ操作が失敗する可能のあるケースでは、実装者は細心の注意を払う必要があります。 例外をスローする前に、ベースとなるリソースを解放し、リソースをクローズ済みとして内部的にマークすることを強くお薦めします。 closeメソッドが複数回呼び出される可能性は低いため、これによってリソースはタイムリに解放されるようになります。 さらに、リソースが別のリソースをラップするか、別のリソースによってラップされるときに発生する可能性のある問題も減少します。

        このインタフェースの実装者には、closeメソッドからInterruptedExceptionがスローされないようにすることも強くお薦めします。 この例外はスレッドの割込みステータスと相互に作用するので、 InterruptedException抑制されるとおそらく実行時の誤動作が発生します。 より一般的には、ある例外を抑制すると問題が発生する場合、AutoCloseable.closeメソッドはその例外をスローすべきではありません。

        Closeablecloseメソッドと異なり、このcloseメソッドはべき等である必要はありません つまり、このcloseメソッドを複数回呼び出すと何らかの副作用が発生する可能性がありますが、これは、複数回呼び出されても副作用がないことが要求されるCloseable.closeと異なります。 ただし、このインタフェースの実装者には、自身のcloseメソッドをべき等にすることを強くお薦めします。

        例外:
        Exception - このリソースを閉じることができない場合