これはコードスタイルの質問です。オープンストリームのJavaコードスタイルtry/finallyブロック
InputStream in = null;
try {
in = acquireStream();
...
} finally {
if (in != null) in.close();
}
注初期化がヌルとfinally
ブロックにヌルをチェックする:私はいくつかexamples from Oracleストリームは以下のように閉じていることを確認含む多くのコード例に気づきます。
私はこのようなコードを記述する傾向がある:どちらかのアプローチには長所や短所が
InputStream in = acquireStream();
try {
...
} finally {
in.close();
}
ありますか?私はヌルチェックが必要ないので私のスタイルが好きです。可能であれば、私はnull
を避けたい。しかし、Oracleのスタイルはオンラインの例では非常に一般的なので、私には隠れたエラーがあるのだろうかと思っています。
try
ブロック外のリソースを取得し、その後はnullチェックなし
finally
でそれを閉鎖する傾向があるなど、
InputStream
、
OutputStream
、
java.sql.Connection
、
java.sql.PreparedStatement
に同じ質問をします。文体の違い以外に紛失しているものはありますか?
ありがとうございました。
参照:http://commons.apache.org/io/api-release/org/apache/commons/io/IOUtils.html#closeQuietly(java.io.InputStream) – Jon