Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 异常引发场景中的StreamReader作用域_Vb.net_Exception_Streamreader - Fatal编程技术网

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:好的,这是有道理的。干杯