为什么我在try with resources子句中实例化时遇到错误?

时间:2017-08-01 14:04:56

标签: java java-8 java-7

以下是给出错误的代码 -

try(StringWriter stringWriter = new StringWriter()) {

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

4 个答案:

答案 0 :(得分:3)

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

public void close() throws IOException

您的try-with-resources会自动调用它。

答案 1 :(得分:2)

添加catch块;

try(StringWriter stringWriter = new StringWriter()) {

      //Do something
} catch(IOException e){

      e.printStackTrace();
}

答案 2 :(得分:2)

正如抱怨的消息提示:你有一个来自自动关闭资源的未处理异常:java.io.IOException 所以你的代码没有完全写入。

你需要一个问题:

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

答案 3 :(得分:0)

在Java中,应通过可能引发异常的函数声明(带有throws子句)或处理(带有catch,finally块)已检查的异常。您的代码也不执行任何操作,这就是为什么会出现编译器错误。

顺便说一句,请参阅this link