【问题标题】:How to call a method in try with resources [closed]如何在尝试使用资源时调用方法[关闭]
【发布时间】:2021-09-30 23:28:09
【问题描述】:

我使用的是 try..finally 代码,但我想对资源使用 try,但我不确定如何在 try 中调用方法与资源有人可以帮助我吗?

最终使用尝试

try{
}
catch{}
finally{
//closed a resources 
//called a methods 
reportAbc();

}

对资源使用 Try

try(){
}
catch{}

但我不确定如何在不使用 finally 的情况下调用 reportAbc() 方法。

【问题讨论】:

  • 为什么不能在finally 块中?也许您应该提供一个minimal reproducible example 来展示您正在尝试做的事情。
  • 你为什么不想使用finally?你要关闭什么资源?

标签: java try-with-resources try-finally


【解决方案1】:

这是来自文档:

注意:try-with-resources 语句可以像普通的 try 语句一样有 catch 和 finally 块。在 try-with-resources 语句中,任何 catch 或 finally 块都会在声明的资源关闭后运行。

https://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html#:~:text=Note%3A%20A%20try%20%2Dwith%2D,resources%20declared%20have%20been%20closed.

【讨论】:

    【解决方案2】:

    正如correct Answer by MaxG 所说,您的资源在离开代码块和进入catchfinally 块之间是关闭的。

    问题的示例代码不完整,语法错误。这是一个完整的例子。

    try
    (
        SomeResource someResource = … ;
    )
    {
        someResource.reportAbc() ;
        …
    
    }
    catch
    {
        // someResource will have been closed by this point.
        …
    }
    finally
    {
        // someResource will have been closed by this point.
        …
    
    }
    

    注意声明资源的括号对。这些对象必须实现AutoCloseable。多个资源将按照它们在括号中列出的相反顺序关闭。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-17
      • 1970-01-01
      • 2012-10-09
      • 1970-01-01
      相关资源
      最近更新 更多