Lock の解放に失敗、出力ストリームならバッファのフラッシュに失敗、低レベル I/O 処理中に
プロセスが中断シグナル拾った、OS や JavaVM がおかしくなっているなど。
対応としてはログ吐いて握りつぶすか IllegalStateException でも投げるしかねぇな。

public static void close(Closeable c){
   try{
       if(c != null)  c.close();
   } catch(IOException ex){
       logger.log(Level.SEVERE, "クローズに失敗", ex);
   }
   return;
}

ちゃんと作る時は (全経路テストこなすために) ユーティリティ機能として実装する。

InputStream in = null;
try{
   in = new FileInputStream(file);
   ....
} finally {
   IO.close(in);
}