如何在尝试使用资源时调用方法[关闭]
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 所说,您的资源在离开代码块和进入catch
或finally
块之间是关闭的。
问题的示例代码不完整,语法错误。这是一个完整的例子。
try
(
SomeResource someResource = … ;
)
someResource.reportAbc() ;
…
catch
// someResource will have been closed by this point.
…
finally
// someResource will have been closed by this point.
…
注意声明资源的括号对。这些对象必须实现AutoCloseable
。多个资源将按照它们在括号中列出的相反顺序关闭。
【讨论】:
以上是关于如何在尝试使用资源时调用方法[关闭]的主要内容,如果未能解决你的问题,请参考以下文章
关闭 UIAlertController 时调用 UINavigation 的 dismissViewControllerAnimated 方法