昔から疑問に思っているのだけど、ファイルやストリームでのclose処理ではどんな条件の時に例外(エラー)が発生するのだろうか?例えば、open処理ならファイルが存在しないと直ぐに例外が発生するし、write処理はディスク容量が無いとか書き込み権限がないと例外が発生する。read処理もネットワークでの読み込み時に接続が切れたりすると例外が発生しやすい。しかし、経験的に言ってclose処理ではなかなか例外が起こらないようだ。 例えば、JavaのInputStream#close()ではJavaDocに下記の説明が記載されている。仕様として「入出力エラー」が発生する可能性は確かに存在するらしい。 例外: IOException - 入出力エラーが発生した場合 Oracle Technology Network for Java Developers | Oracle Technology Net