如何在尝试使用资源时调用方法[关闭]

Posted

技术标签:

【中文标题】如何在尝试使用资源时调用方法[关闭]【英文标题】: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?你要关闭什么资源? 【参考方案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。多个资源将按照它们在括号中列出的相反顺序关闭。

【讨论】:

以上是关于如何在尝试使用资源时调用方法[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

WPF中Closing窗体时调用Hide()方法异常

如何使用Angular 5在单击按钮时调用多个方法?

使用 Angular 2 更改值时调用方法

关闭 UIAlertController 时调用 UINavigation 的 dismissViewControllerAnimated 方法

杀死风暴拓扑后资源清理

尝试使用资源如何调用刷新方法[重复]