Область видимости StreamReader в исключительном сценарии - PullRequest
1 голос
/ 24 августа 2011

В следующей подпрограмме будет ли 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

Ответы [ 2 ]

3 голосов
/ 24 августа 2011

Вы должны заключить переменную StreamReader в оператор использования.

Using sr as StreamReader = File.OpenText("someFilename")
...
End Using
1 голос
/ 24 августа 2011

Поток не будет закрыт, пока процесс не будет остановлен. Даже если это так, вы должны закрыть его. Лучший способ - использовать метод «using», как уже упоминалось ранее. Но это не приводит к потере данных в отличие от написания. В другом переводе вы должны закрыть поток, но это не критик.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...