1

IOException をスローできる関数があるため、内部で例外をキャッチしません。ただし、クローズするリソースがいくつかあります。try-with-resource (catch ブロックなし) を使用して、そのようにするのは正しいですか?

public void workOnFiles() throws IOException {

    try(FileInputStream fis = new FileInputStream("bau.txt");) {
        // Do some stuff
    }       
}

または、次のようなことをする必要があります。

public void workOnFiles() throws IOException {

    FileInputStream fis = new FileInputStream("bau.txt");
    // Do some stuff
    fis.close();    
}
4

3 に答える 3

5

2 つ目では、例外がスローされた場合、fis閉じられません。オプションは、例外をスローできるステートメントをブロックで囲み、ブロックtryで閉じることです。fisfinally

ただし、すでにJava 7を使用しているため、 try-with-resource を使用する必要があります。

于 2013-07-28T08:32:42.233 に答える
0

try-with-resources は(Closeable resources)、例外が発生するかどうかにかかわらず、常にリソースを閉じます(Work only java7 onwards)

例外が発生した場合、2番目のコードはリソースを閉じません。
したがって、使用try-with-resourcesしている場合に使用するかjava7、コードを編集しtryfinallyブロックすることができます。

finally block guarantees execution irrespective of exception raises or not

于 2013-07-28T08:36:03.393 に答える