Item 9. try-with-resourceではなくtry-finallyを使用
970 ワード
JAvaライブラリにはcloseメソッドを直接呼び出す必要があるリソースがたくさんあります.でも人がやることなので、やるのを忘れることが多いです.
安全網としてロケータを使用していますが、Item 8ほど信頼性はありません.
従来try-finallyが使用されていますが、最善の方法ではありません.
また、複数のリソースがある場合はtry文を重ねて使用し、コードが乱雑になります.
代替案はtry-with-resourceです.tryにはリソースが入っています使用するには、AutoCloseableインタフェースを実装する必要があります.try文に障害が発生した場合、AutoCloseableで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セクションも使えますので、使いましょう.Reference
この問題について(Item 9. try-with-resourceではなくtry-finallyを使用), 我々は、より多くの情報をここで見つけました https://velog.io/@simgyuhwan/Item-9.-try-finally보다는-try-with-resource를-사용하라テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol