为什么我在尝试使用资源子句中实例化时出现错误?



这是给出错误的代码 -

try(StringWriter stringWriter = new StringWriter()) {

IDE 抱怨来自自动关闭资源的未处理异常:java.io.IOException是否有必要在这里在构造函数中传递一些东西?

因为close方法(在StringWriter中(声明为:

public void close() throws IOException

您的资源试用将自动调用它。

添加 catch 块;

try(StringWriter stringWriter = new StringWriter()) {
//Do something
} catch(IOException e){
e.printStackTrace();
}

正如抱怨的msg所建议的那样:您有一个来自自动关闭资源:java.io.IOException的未处理异常,因此您的代码没有完全编写。

你需要一个陷阱:

try (StringWriter stringWriter = new StringWriter()) {
//Do something
} catch (IOException e) {
//TODO
e.printStackTrace();
}

在 Java 中,检查的异常应该由可能抛出这些异常的函数声明(使用 throws 子句(或处理(使用 catch,finally 块(。您的代码也不执行,这就是您收到编译器错误的原因。

顺便说一句,请参阅此链接。

最新更新