VB.Net Tutorial/Development/Finally
Содержание
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.