尝试抓住最后一节

La *_*bla 9 java try-catch-finally

在finally子句中编写try和catch是否被认为是错误的编程?

我在我的main方法中有一个我要关闭的fileInputStream.我想将.close()放在finally中,所以它无论如何都会关闭.我不想在main方法中添加throws声明,因为它是主要方法:P

    }finally{
        try {
            commandFile.close();
        } catch (IOException e) {
            throwException(e);
        }
    }
Run Code Online (Sandbox Code Playgroud)

好吗?谢谢

Arj*_*jms 9

不幸的是,在最终方法中需要try/catches的模式是Java 6及之前的重复模式.我认为它实际上是一种不好的做法,但在Java 6中你不能真正避免这种做法(见下面的Java 7).

一个附加问题是finally块中抛出的任何新异常都将覆盖在到达此块之前抛出的异常.

在Java 7中,特别针对需要关闭资源的情况(try/finally/try/catch构造的大多数用例)新的try-with-resources构造.这也将捕获主要和次要异常.

因此,使用此构造是JDK 7中的最佳实践,是的,因此,您显示的代码在Java 7中是一种不好的做法.