尝试使用资源,但没有最终

问题描述 投票:0回答:1

在 Kathy Sierra 所著的《OCP Java SE 8 Programmer II》一书中,第 187 页指出:

以下合法代码演示了不带资源的尝试 抓住或最后:

try (Reader reader = 
  new BufferedReader(new FileReader(file))) {
  // do stuff
}

但是当我在 IntelliJ、Java 8 中尝试时,它无法编译。我试图找到这本书的勘误表,但没有找到。我在这里缺少什么?

java exception try-catch filereader autocloseable
1个回答
0
投票

但是,当我剪切并粘贴您的代码时,我只看到一个问题。 具体来说,

java.io
包中的几个方法/构造函数会抛出
java.io.IOException
或其子类之一的异常。

因此,至少您需要为

IOException
添加一个 catch 子句,或者声明该方法可以抛出
IOException

换句话说,尽管书上说:

以下合法代码演示了不带资源的尝试 抓住或终于

确实,您可以有一个没有 catch 子句的特定块,但是如果您选择省略 catch 子句,它不会消除您处理(或传递)异常的需要。

也就是说,你不必在这里处理异常 - 但你必须在某个地方处理它。

© www.soinside.com 2019 - 2024. All rights reserved.