Item 9. try-with-resourceではなくtry-finallyを使用


JAvaライブラリにはcloseメソッドを直接呼び出す必要があるリソースがたくさんあります.でも人がやることなので、やるのを忘れることが多いです.
安全網としてロケータを使用していますが、Item 8ほど信頼性はありません.
従来try-finallyが使用されていますが、最善の方法ではありません.
static String firstLineOfFile(String path) throws IOException {
    BufferdReader br = new BufferedReader(new FileReader(path));
    try{
    	return br.readLine();
    } finally {
    	br.close();
    }
}
上のコードにはいくつかの欠点があります.try文とfinally文の両方にエラーが発生した場合、1つのエラーのみが記録され、残りのエラーは不明になります.
また、複数のリソースがある場合はtry文を重ねて使用し、コードが乱雑になります.
代替案はtry-with-resourceです.tryにはリソースが入っています使用するには、AutoCloseableインタフェースを実装する必要があります.try文に障害が発生した場合、AutoCloseableでclose()を呼び出してリソースを閉じます.
static String firstLineOfFile(String path) throws IOException {
    try (BufferedReader br = new BufferedReader(new FileReader(path)) {
    	return br.readLine();
    }
}
try-with-resourceを使用すると、リソースだけでなく、より短く、より表示しやすいコードを作成できます.もちろん、後でcatchセクションも使えますので、使いましょう.