安全にリソースを閉じて例外を伝播する必要があります。これまでのところ私は2つの解決策を思いついた。ファイルを閉じて例外を同時に伝播する適切な方法
ソリューション1
FileObject sourceDir = null;
FileObject targetDir = null;
BufferedWriter bw = null;
BufferedReader br = null;
try {
// R/W operation with files
} finally {
// close sourceDir, targetDir, br, bw
}
ので、私はないんだけど、私は第二の溶液中throw e
が好きではありませんが、try-finally
は私には少し変わったようだ2
FileObject sourceDir = null;
FileObject targetDir = null;
BufferedWriter bw = null;
BufferedReader br = null;
try {
// R/W operation with files
} catch (IOException e) {
throw e;
} finally {
// close sourceDir, targetDir, br, bw
}
ソリューションこれらのどれを使うべきかを確かめてください。それとももっと良い方法がありますか?
ソリューション2はソリューション1と同じです。これは、catchブロックにコードを追加する(例:例外をログに記録する)場合にのみ異なります。 –
私は知っているが、例外を再び投げることは不要なコードです。この場合、私はここにログしたくない...私はtry-finallyが大丈夫かどうかを知りたい。 – user219882
はい、それは絶対にokです。 2つのコードスニペットの動作が異なると思われるかもしれません。 –