Apache Commons IO は、入出力に関するユーティリティを集めたライブラリで、かつてに比べれば存在感が薄れているとはいえ、現在でも広く利用されている。 しかし、そんなライブラリの中にも、使用すべきでないものがある。closeQuietly という名前でオーバーロードされている、IOUtils クラスの一連の static メソッドがそれだ。 API リファレンスに載っているコードサンプルは、次のようなものだ。このサンプル通りであれば問題なさそうではある (Exception で catch しているところがちょっとモヤモヤするが、そこは本題と関係ない)。 char[] data = new char[1024]; Reader in = null; try { in = new FileReader("foo.txt"); in.read(data); in.close();

