リソースの要求/クローズをする時のJava try/catch/finallyのベストプラクティスは?の回答に記載がございました。
When you do a close or flush on an output stream, there is a "once in a blue moon" chance that an exception will be thrown due to disc errors or file system full. You should not squash this exception!.
アウトプットストリームをclose、flushするときに、滅多にないことではあるが、ディスクエラーが起きたり、ファイルシステムに満杯になるとexceptionを投げます。このexceptionを閉じるべきではない。
ディスクエラーかファイルシステムが起きた時にclose()でエラーが発生するそうです。
しかし、flush()メソッドをtry文の中に入れればこのエラーは検出してcatchできるので
特にこっちのclose()メソッドでわざわざ報告する必要はないよと
報告者はソースコードコメントに書いています。
老婆心で申し上げると自分もclose()で発生するエラーに関して、
どうしてこれだけ違うところでcatch()するの?と思っていたので
Java7のtry-with-resourcesにより
ストリームを開き閉じることにより発生するExceptionを同じ文脈で処理できるようになって
嬉しいですね。
2015/01/31 15:33