私はJavaでのリソースを取得する必要があり、その後、リソースが解放されることを保証するたびに、例外がスローされる可能性がある場合は、私は次のパターンを使用します。Javaがしようと、最終的には内側のtry-catchパターン
try {
Resource resource = null;
try {
resource = new Resource();
// Use resource
} finally {
if (resource != null) {
// release resource
}
}
} catch (Exception ex) {
// handle exceptions thrown by the resource usage or closing
}
を私は、データベース接続を必要とし、接続を使用するか、閉じると例外をスローすることができ、私は次のコード記述した場合たとえば、:
try {
Connection connection = null;
try {
connection = ... // Get database connection
// Use connection -- may throw exceptions
} finally {
if (connection != null) {
connection.close(); // This can also throw an exception
}
}
} catch (SQLException ex) {
// handle exceptions thrown by the connection usage or closing
}
を私はちょうど私ので、簡単なのtry-catch-ついにやって好きではありませんデータベースがconneしたときにスローされる可能性のある例外をキャッチする義務があります私はそれをどう扱うかわからない。
この状況を処理するためのより良いパターンがありますか?
通常の例外にfinally節を追加しないのはなぜですか(この場合はSqlException ..) –
似ていますが正確なものはありません:http://stackoverflow.com/questions/1335812/try-catch-finally -and-then-again-a-try-catch – razlebe
リソースを閉じる前にリソースがヌルであるかどうかチェックする必要があるのは好きではありません。私はむしろtryブロックの外にリソースを作成し、すべてを避けるでしょう。閉じている間にスローされた例外もかなり役に立たず、ただログに記録し続けます。 –