Vb.net 异常引发场景中的StreamReader作用域
在以下子例程中,当引发异常时,Vb.net 异常引发场景中的StreamReader作用域,vb.net,exception,streamreader,Vb.net,Exception,Streamreader,在以下子例程中,当引发异常时,StreamReader是否会正确关闭?还是我必须自己做点什么来确保这一点 Sub mySub() Dim sr As StreamReader = File.OpenText("someFilename") Dim line As String = sr.ReadLine() While Not (line Is Nothing) ' Some logic here If someCondition Then
StreamReader
是否会正确关闭?还是我必须自己做点什么来确保这一点
Sub mySub()
Dim sr As StreamReader = File.OpenText("someFilename")
Dim line As String = sr.ReadLine()
While Not (line Is Nothing)
' Some logic here
If someCondition Then
Throw New Exception("someExplanation")
End If
line = sr.ReadLine()
End While
End Sub
在进程终止之前,流不会关闭。即使是这样,你也应该把它关上。最好的方法是使用前面提到的“使用”方法。但它不会造成数据丢失,这与写入时不同。在其他翻译中,您应该关闭流,但它不是批评家。在进程终止之前,流不会关闭。即使是这样,你也应该把它关上。最好的方法是使用前面提到的“使用”方法。但它不会造成数据丢失,这与写入时不同。在其他翻译中,您应该关闭流,但它不是批评家。您应该将StreamReader变量包装在using语句中
Using sr as StreamReader = File.OpenText("someFilename")
...
End Using
您应该将StreamReader变量包装在using语句中
Using sr as StreamReader = File.OpenText("someFilename")
...
End Using
如果我从
…
中抛出异常,StreamReader
和文件句柄等将关闭?一旦执行离开Using块,它将自动调用StreamReader上的.Dispose(),这将释放StreamReader/底层stream.Ace使用的所有资源,谢谢。我想知道为什么在离开封闭的函数作用域时不会发生这种情况?其他任何东西都不能引用它。@Tomalak,垃圾收集器最终会找到它,但可能不会在您再次需要该文件之前发生。@Hand-E-Food:好的,这是有道理的。干杯。如果我从…
中抛出异常,StreamReader
和文件句柄等将关闭?一旦执行离开Using块,它将自动调用StreamReader上的.Dispose(),这将释放StreamReader/底层stream.Ace使用的所有资源,谢谢。我想知道为什么在离开封闭的函数作用域时不会发生这种情况?其他任何东西都不能引用它。@Tomalak,垃圾收集器最终会找到它,但可能不会在您再次需要该文件之前发生。@Hand-E-Food:好的,这是有道理的。干杯