最善の方法は、Java 7 を使用してリソースで try を使用するか、手動で同じことを行い、抑制された例外としてクローズからの例外を追加することです。
Java 7より前:カスタム例外をスローしている場合、Java 7で行われているように、抑制された例外を追加できます(例外でフィールドを作成し、抑制されたリストを作成し、クローズ操作からの例外をそこに置き、例外を処理するときにそこを見てくださいそれができない場合は、ログに記録する以外に方法はありません。
例: Java チュートリアルから
static String readFirstLineFromFile(String path) throws IOException {
try (BufferedReader br = new BufferedReader(new FileReader(path))) {
return br.readLine();
}
}
しかし、より良い形式は次のとおりです。
static String readFirstLineFromFile(String path) throws IOException {
try (FileReader fr = new FileReader(path);
BufferedReader br = new BufferedReader(fr)) {
return br.readLine();
}
}
このように、FileReader の作成に成功しても BufferedReader の作成に失敗した場合 (メモリ不足など)、FileReader は閉じられます。