java - try-with-resource资源创建的执行顺序

我有一个 try-with-resource block ,它从 Blob 对象创建 ObjectInputStream 的新实例,例如

try(ObjectInputStream mObjectStream = new ObjectInputStream(mblob.getBinaryStream()))
{
...
}

但是,如果在 .getBinaryStream() 处抛出异常,则 mObjectStream 对象可能未释放,这是我的应用程序担心的问题。

我考虑过将其拆分如下

try(InputStream mStream = mblob.getBinaryStream(); ObjectInputStream mObjectStream = new ObjectInputStream(mStream){
...

}

如果首先创建 mObjectStream 是否会导致问题,或者在这种情况下总是首先创建 mStream

最佳答案

try(InputStream mStream = mblob.getBinaryStream();
 ObjectInputStream mObjectStream = new ObjectInputStream(mStream))

当您列出并打开多个资源时,它们将按照声明的顺序创建。即首先创建 mStream,然后是 mObjectStream。

此外,它们将以相反的顺序关闭。最新的将首先关闭,然后是旧的。

https://stackoverflow.com/questions/28561181/

相关文章:

python - 断言错误 : View function mapping is overwriti

angularjs - 使用angularjs突出显示表格行

php - Twig Loader 命名空间

assembly - 汇编语言中的 or 和 ori 有什么区别?

python-2.7 - 如何使用python检查机器人框架中的字典是否为空

python - 使用 np.arrays python 对列表进行排序

java - 正则表达式用引号替换字符串

r - R中的嵌套foreach循环,其中内部循环返回一个矩阵

angularjs - 作为指令的表行在 angularjs 中显示在表上下文之外

oracle - 增加 SQL Developer 导出中的行数