【问题标题】:Why am i getting an error while instantiating within try with resources clause?为什么在 try with resources 子句中实例化时出现错误?
【发布时间】:2018-01-08 10:55:13
【问题描述】:

这是给出错误的代码 -

try(StringWriter stringWriter = new StringWriter()) {

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

【问题讨论】:

  • 错过了 catch 块?

标签: java java-8 java-7


【解决方案1】:

添加catch块;

try(StringWriter stringWriter = new StringWriter()) {

      //Do something
} catch(IOException e){

      e.printStackTrace();
}

【讨论】:

    【解决方案2】:

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

    你需要一个陷阱:

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

    【讨论】:

      【解决方案3】:

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

      public void close() throws IOException
      

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

      【讨论】:

        【解决方案4】:

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

        顺便说一句,请参阅this link

        【讨论】:

          猜你喜欢
          • 2021-05-12
          • 1970-01-01
          • 2015-11-26
          • 2013-07-18
          • 1970-01-01
          • 1970-01-01
          • 2018-10-20
          • 1970-01-01
          • 2021-12-14
          相关资源
          最近更新 更多