我有一个 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/