VB.Net Tutorial/Development/Finally

Материал из VB Эксперт
Перейти к: навигация, поиск

Close Stream in Finally statement

<source lang="vbnet">Imports System.IO public class Test

  public Shared Sub Main
       Dim srReader As IO.StreamReader
       Dim strLine As String
       Dim blnDone As Boolean = False
       Dim strFileName As String = "test.txt"
       "Read text from a file and display it in a list box.
       srReader = New IO.StreamReader(strFileName)
       Try
           While Not blnDone
               strLine = srReader.ReadLine()
               If strLine Is Nothing Then
                   blnDone = True
               Else
                   Console.WriteLine(strLine)
               End If
           End While
           srReader.Close()
       Catch ex As Exception
           Console.WriteLine("An error has occurred.")
       Finally
           srReader.Close()
       End Try
  End Sub

End class</source>

Finally after multiple catch statements

<source lang="vbnet">Module Module1

   Sub Main()
       Dim intItem1 As Integer = 0
       Dim intItem2 As Integer = 128
       Dim intResult As Integer
       Try
           intResult = intItem2 / intItem1
       Catch e As OverflowException
           Console.WriteLine("An overflow exception occurred.")
       Catch e As OutOfMemoryException
           Console.WriteLine("Out of memory.")
       Catch e As IndexOutOfRangeException
           Console.WriteLine("Array index out of range.")
       Finally
           Console.WriteLine("Finally")
       End Try
   End Sub

End Module</source>

An overflow exception occurred.
Finally

Finally always executes

<source lang="vbnet">Public Class Tester

   Public Shared Sub Main
        DoesNotThrowException()
   End Sub
  Public Shared Sub DoesNotThrowException()
     Try
        Console.WriteLine("In DoesNotThrowException")
     Catch
        Console.WriteLine("This Catch never executes")
     Finally
        Console.WriteLine("Finally executed in DoesNotThrowException")
     End Try
     Console.WriteLine("End of DoesNotThrowException")
  End Sub " DoesNotThrowException

End Class</source>

In DoesNotThrowException
Finally executed in DoesNotThrowException
End of DoesNotThrowException

Try Catch with Finally clause

<source lang="vbnet">Option Strict On

Imports System
Class Tester
    Public Shared Function DoDivide(ByVal a As Double, ByVal b As Double) As Double
        If b = 0 Then
            Throw New System.DivideByZeroException( )
        End If
        If a = 0 Then
            Throw New System.ArithmeticException( )
        End If
        Return a / b
    End Function "DoDivide
    Shared Sub Main( )
        Try
            Console.WriteLine("Open file here")
            Dim a As Double = 5
            Dim b As Double = 0
            Console.WriteLine("{0} / {1} = {2}", a, b, DoDivide(a, b))
            Console.WriteLine("This line may or may not print")
        Catch e As System.DivideByZeroException
            Console.WriteLine("DivideByZeroException caught!")
        Catch
            Console.WriteLine("Unknown exception caught!")
        Finally
            Console.WriteLine("Close file here.")
        End Try
    End Sub
End Class</source>
Open file here
DivideByZeroException caught!
Close file here.