尝试用资源或关闭()进退两难

use*_*212 1 java exception-handling

我有一个可以抛出IOException的函数,所以我没有在内部捕获异常.但是我有一些资源要关闭.使用try-with-resource(没有任何catch块)以这种方式做是正确的:

public void workOnFiles() throws IOException {

    try(FileInputStream fis = new FileInputStream("bau.txt");) {
        // Do some stuff
    }       
}
Run Code Online (Sandbox Code Playgroud)

或者我应该这样做:

public void workOnFiles() throws IOException {

    FileInputStream fis = new FileInputStream("bau.txt");
    // Do some stuff
    fis.close();    
}
Run Code Online (Sandbox Code Playgroud)

Roh*_*ain 5

在第二个中,如果抛出异常,您fis将不会被关闭.一种选择是封装,可以扔在一个个例外语句try块,并关闭fis在一个finally块.

但是,由于您已经使用Java 7,因此应该使用try-with-resource.