Wie Sie die strukturierte Ausnahmebehandlung in Visual Basic .NET oder Visual Basic 2005

Zusammenfassung

Dieser Artikel veranschaulicht, wie die strukturierte Ausnahmebehandlung in Visual Basic .NET oder Visual Basic 2005.

Voraussetzungen

Die folgende Liste enthält die empfohlene Hardware, Software, Netzwerkinfrastruktur und Servicepacks, die Sie benötigen:
  • Visual Basic .NET oder Visual Basic 2005
Es wird vorausgesetzt, dass Sie mit folgenden Themen vertraut sind:
  • Visual Basic .NET oder Visual Basic 2005
  • Microsoft Visual Studio .NET oder Microsoft Visual Studio 2005

Strukturierte Ausnahmebehandlung

Visual Basic .NET oder Visual Basic 2005 bietet die strukturierte Ausnahmebehandlung, der bietet eine leistungsstarke und lesbare Alternative zur Fehlerbehandlung "On Error Goto" das in früheren Versionen von Visual Basic verfügbar ist. Strukturierte Ausnahmebehandlung ist leistungsfähiger, da Fehlerhandler in anderen Fehlerhandler in dasselbe geschachtelt werden können. Strukturierte Ausnahmebehandlung verwendet außerdem eine Block-Syntax ähnelt der , wenn... Else... End If Anweisung. Dadurch wird Visual Basic .NET und Visual Basic 2005 Code besser lesbar und leichter zu verwalten.

Hinweis: Visual Basic .NET oder Visual Basic 2005 die "On Error Goto" Syntax aus Kompatibilitätsgründen beibehalten. Sie können weiterhin diese Syntax in Visual Basic .NET oder Visual Basic 2005. Jedoch kann nicht strukturierte Ausnahmebehandlung und On Error -Anweisung in der gleichen Prozedur kombinieren. Wenn Sie neuen Code schreiben Microsoft empfiehlt die Verwendung der strukturierten Ausnahmebehandlung.

Die grundlegende Syntax der strukturierten Fehlerbehandlung lautet folgendermaßen:
Try   'Code that may raise an error.
Catch
'Code to handle the error.
Finally
'Code to do any final clean up.
End Try

Versuchen und Ende sind erforderlich. Catch und Finally -Anweisung sind nicht erforderlich, wenn Sie mindestens eine im Code berücksichtigt werden. Sie können auch mehrere Catch -Anweisungen, damit jeder Catch -Block einen bestimmten Fehler behandelt.

Abfangen von Ausnahmen

  1. Starten Sie Visual Studio .NET oder Visual Studio 2005.
  2. Erstellen Sie ein neues Konsolenanwendungsprojekt in Visual Basic .NET oder Visual Basic 2005.
  3. Fügen Sie die Sub Main -Prozedur folgenden Code hinzu:
    Dim a As Integer = 0Dim b As Integer = 0
    Dim c As Integer = 0

    Try
    a = b \ c
    Catch exc As Exception
    Console.WriteLine("A run-time error occurred")
    Finally
    Console.ReadLine()
    End Try

  4. Klicken Sie im Menü Debuggen auf Starten , um die Anwendung auszuführen. Der Code versucht, eine Zahl durch Null zu teilen. Dies ist ein unzulässiger Vorgang, bei dem eine Division durch Null-Ausnahme. Glücklicherweise Catch -Block fängt dieser Fehler und das Konsolenfenster zeigt die folgende Fehlermeldung angezeigt:
    A run-time error has occurred

  5. Schließen Sie das Konsolenfenster.

Mehrere Ausnahmen

Dieser Abschnitt veranschaulicht, wie mehrere Catch -Anweisungen Fehler behandeln.

  1. Öffnen Sie die Konsole, die Sie im vorherigen Abschnitt erstellt haben.
  2. Ersetzen Sie den Code, den Sie im vorherigen Abschnitt mit dem folgenden Code kopiert in Sub Main -Prozedur:
    Dim a As Integer = 2147483647Dim b As Integer = 0
    Dim c As Integer = 0

    Try
    a += 1
    Catch exc As DivideByZeroException
    Console.WriteLine("Error: Divide by zero")
    Catch exc As OverflowException
    Console.WriteLine("Error: Overflow")
    Finally
    Console.ReadLine()
    End Try

    Dieser Code enthält zwei Catch -Blöcke: eine vorherige Division durch Null abgefangen und eine neue Überlauffehler zu.
  3. Klicken Sie im Menü Debuggen auf Starten , um die Anwendung auszuführen. Das Konsolenfenster zeigt die folgende Fehlermeldung angezeigt:
    Error: Overflow

  4. Schließen Sie das Konsolenfenster.
  5. Da immer alle Fehler vorhersehen können, die auftreten können, können Sie einen Block Alle unerwarteten Ausnahmen hinzufügen. Beispielsweise fügen Sie den folgenden Code vor die Finally -Anweisung unerwartete Fehler und die entsprechende Fehlermeldung angezeigt:
    Catch exc As ExceptionConsole.WriteLine("Error: " & exc.Message)

  6. Klicken Sie im Menü Datei auf Projektmappe schließen.

Löst eine Ausnahme aus

Strukturierte Ausnahmebehandlung verwendet die Catch -Anweisung eine Ausnahme abgefangen. Strukturierte Ausnahmebehandlung auch ermöglicht eine Ausnahme ausgelöst. Beispielsweise empfiehlt es sich um eine Ausnahme auszulösen, wenn Validierung innerhalb einer Property Set -Prozedur ausführen, da möglicherweise einen Fehler ausgelöst, wenn eine Geschäftsregel verletzt wird.

  1. Starten Sie Visual Studio .NET oder Visual Studio 2005.
  2. Erstellen Sie ein neues Konsolenanwendungsprojekt in Visual Basic .NET oder Visual Basic 2005.
  3. Klicken Sie im Menü Projekt auf Klasse hinzufügen.
  4. Geben Sie im Fenster Neues Element hinzufügen clsPerson.vb im Textfeld Name , und klicken Sie dann auf OK.
  5. Fügen Sie den folgenden Code in Public Class ClsPerson... End Class Aussagen:
    Private mintAge As Integer
    Public Property Age() As Integer
    Get
    Age = mintAge
    End Get
    Set(ByVal Value As Integer)
    If Value >= 0 Then
    mintAge = Value
    Else
    Throw New ArgumentException ("Age cannot be negative")
    End If
    End Set
    End Property

    Dieser Code erstellt eine Age -Eigenschaft. Da eine Person eine negative Alter aufweisen kann, wird ein Fehler ausgelöst, wenn der Benutzer der Klasse versucht, Alter auf eine Zahl kleiner als 0 (null) festgelegt.
  6. Fügen Sie den folgenden Code in der Sub Main -Prozedur Module1.vb:
    Dim p As New clsPerson()
    Try
    p.Age = -1
    Catch exc As Exception
    Console.WriteLine(exc.Message)
    Finally
    Console.ReadLine()
    End Try

  7. Klicken Sie im Menü Debuggen auf Starten , um die Anwendung auszuführen. Das Konsolenfenster zeigt die folgende Fehlermeldung angezeigt:
    Age cannot be negative

  8. Schließen Sie das Konsolenfenster.

Vollständige Codeliste

Abfangen von Ausnahmen

Module Module1
Sub Main()
Dim a As Integer = 0
Dim b As Integer = 0
Dim c As Integer = 0

Try
a = b \ c
Catch exc As Exception
Console.WriteLine("A run-time error occurred")
Finally
Console.ReadLine()
End Try

End Sub

End Module

Mehrere Ausnahmen

Module Module1
Sub Main()
Dim a As Integer = 2147483647
Dim b As Integer = 0
Dim c As Integer = 0

Try
a += 1
Catch exc As DivideByZeroException
Console.WriteLine("Error: Divide by zero")
Catch exc As OverflowException
Console.WriteLine("Error: Overflow")
Catch exc As Exception
Console.WriteLine("Error: " & exc.Message)
Finally
Console.ReadLine()
End Try


End Sub

End Module

Löst eine Ausnahme aus

Module Module1
Sub Main()
Dim p As New clsPerson()

Try
p.Age = -1
Catch exc As Exception
Console.WriteLine(exc.Message)
Finally
Console.ReadLine()
End Try
End Sub

End Module

Public Class clsPerson

Private mintAge As Integer

Public Property Age() As Integer
Get
Age = mintAge
End Get
Set(ByVal Value As Integer)
If Value >= 0 Then
mintAge = Value
Else
Throw New ApplicationException("Age cannot be negative")
End If
End Set
End Property

End Class

REFERENZEN

Weitere Informationen finden Sie auf der folgenden Microsoft-Websites:

Fehlerbehandlung VB.NET wie: mit Ausnahmen ( Visual Basic-Entwickler -Artikel)
http://msdn.microsoft.com/en-us/library/aa227603(v=vs.60).aspx

Wie wird eine Ausnahme abgefangen
http://msdn.microsoft.com/en-us/library/ys1b32h3(v=vs.80).aspx

Wie wird eine Ausnahme ausgelöst
http://msdn.microsoft.com/en-us/library/z7w9ff54(v=vs.80).aspx

Eigenschaften

Artikelnummer: 315965 – Letzte Überarbeitung: 21.01.2017 – Revision: 1

Microsoft Visual Basic 2005, Microsoft Visual Basic .NET 2003 Standard Edition, Microsoft Visual Basic .NET 2002 Standard Edition

Feedback