Ausnahmebehandlung in VB.NET (Try Catch)

⚡ Intelligente Zusammenfassung

Die Ausnahmebehandlung in VB.Net kümmert sich um Laufzeitfehler wie Division durch Null mithilfe der Schlüsselwörter Try, Catch, Finally und Throw, sodass ein Programm auf Probleme angemessen reagieren kann, anstatt während der Ausführung abzustürzen.

  • 🔍 Ausnahme: Ein Problem, das während der Ausführung auftritt, zum Beispiel die Division einer Zahl durch Null.
  • 🛡️ Versuchen und Fangen: Der try-Block umschließt den risikobehafteten Code; der catch-Block behandelt die ausgelöste Ausnahme.
  • ✅ Schließlich: Der Finally-Block wird unabhängig davon ausgeführt, ob eine Ausnahme auftritt oder nicht.
  • 🚦 Werfen: Die Methode `Throw` löst ein Ausnahmeobjekt aus, das von der Klasse `System.Exception` abgeleitet ist.
  • 🧩 Benutzerdefinierte Ausnahmen: Erben Sie von ApplicationException, um Ihre eigenen Ausnahmetypen zu definieren.
  • 🤖 KI-Hilfe: GitHub Copilot und IntelliCode Generieren Sie Try-Catch-Blöcke während der Eingabe.

Ausnahmebehandlung in VB.NET

Was ist eine Ausnahme in VB.Net?

An Exception in VB.Net bezieht sich auf ein Problem, das während der Programmausführung auftritt. Es wird durch einen unerwarteten Umstand verursacht. Ein gutes Beispiel ist, wenn Sie eine Divisionsoperation durchführen und dann durch Null (0) dividieren. Es wird eine Ausnahme ausgelöst.

Was ist Ausnahmebehandlung in VB.Net?

Mit Ausnahmen in VB.Netkönnen Sie die Kontrolle über ein Programm von einem Teil auf einen anderen übertragen. In VB.Net werden Ausnahmen mit den folgenden 4 Schlüsselwörtern behandelt:

Stichwort (Keyword) Detail
Versuchen Die Aufgabe des Try-Blocks besteht darin, den Codeblock zu identifizieren, für den eine bestimmte Ausnahme aktiviert wird. Es sollten ein oder mehrere Catch-Blöcke folgen.
Ringen Das Abfangen der Ausnahme erfolgt in diesem Block. Es handelt sich um einen Ausnahmebehandler, in dem die Ausnahme behandelt wird.
Endlich Verwenden Sie den Final-Block, um eine Reihe von Anweisungen auszuführen, unabhängig davon, ob eine Ausnahme aufgetreten ist oder nicht.
Werfen Nach dem Auftreten eines Problems wird eine Ausnahme ausgelöst. Dies ist die Arbeit des Schlüsselworts Throw.

Nachdem die Funktionen dieser vier Schlüsselwörter geklärt sind, überlegen Sie nun, wie sie sich in einem einzigen Satz kombinieren lassen.

Syntax von Try Catch in VB.Net

Die Try Catch-Anweisungen in VB.Net werden mit der folgenden Syntax definiert:

Try
   [ try_Statement(s) ]
   [ Exit Try ]
[ Catch [ exception_name [ As type ] ] [ When expression ]
   [ catch_Statement(s) ]
   [ Exit Try ] ]
[ Catch ... ]
[ Finally
   [ finally_Statement(s) ] ]
End Try

Der Try/Catch-Block sollte den Code umgeben, der möglicherweise eine Ausnahme auslöst. Dieser Code wird als geschützter Code bezeichnet. Sie können mehrere Catch-Anweisungen verwenden, wenn Sie verschiedene Arten von Ausnahmen abfangen müssen.

Beispiel für die Ausnahmebehandlung in VB.Net mit Try Catch und Final

Mithilfe von Try/Catch-Anweisungen können Sie Ihren normalen Programmcode vom Fehlerbehandlungssystem trennen. Wir zeigen Ihnen, wie Sie eine Ausnahme mithilfe der Schlüsselwörter Try, Catch und Finally behandeln.

Schritt 1) Erstellen Sie eine neue Konsolenanwendung.

Schritt 2) Benutze diesen Code:

Module Module1
    Sub divisionFunction(ByVal n1 As Integer, ByVal n2 As Integer)
        Dim answer As Integer
        Try
            answer = n1 \ n2
        Catch ex As DivideByZeroException
            Console.WriteLine("Exception: {0}", ex)
        Finally
            Console.WriteLine("Answer is: {0}", answer)
        End Try
    End Sub
    Sub Main()
        divisionFunction(4, 0)
        Console.ReadKey()
    End Sub

End Module

Schritt 3) Klicken Sie in der Symbolleiste auf die Schaltfläche „Start“, um den Code auszuführen. Sie sollten die folgende Ausgabe erhalten:

VB.NET Try Catch Finally-Konsolenausgabe mit Anzeige der abgefangenen DivideByZeroException

Hier ist ein Screenshot des Codes:

VB.NET Try Catch Finally-Beispielcode, dargestellt in Visual Studio

Erklärung von Code:

  1. Erstellen eines Moduls mit dem Namen Module1.
  2. Erstellen einer Unterprozedur namens „divisionFunction“ mit zwei ganzzahligen Argumenten n1 und n2. ByVal ist ein VB.Net-Schlüsselwort, das angibt, dass die Werte der Argumente als Wert übergeben werden.
  3. Erstellen einer Ganzzahlvariablen mit dem Namen „Antwort“.
  4. Beginn des Try/Catch-Blocks. Wir müssen den Code, von dem wir vermuten, dass er eine Ausnahme auslösen könnte, mit diesem Block umgeben.
  5. Durchführen einer Divisionsoperation zwischen den Werten der Variablen n1 und n2. Das Ergebnis der Divisionsoperation wird der Variablen Antwort zugewiesen. Dieser Code kann eine Ausnahme auslösen, beispielsweise wenn wir eine Zahl durch Null dividieren, daher haben wir ihn mit Try/Catch-Blöcken umgeben.
  6. Abfangen der Ausnahme namens DivideByZeroException und Zuweisen der generierten Ausnahmemeldung zum Ex.
  7. Drucken von Text auf der Konsole, um den Benutzer über den Typ/Namen der ausgelösten Ausnahme zu informieren.
  8. Der „Finally“-Block. Dies wird unabhängig davon ausgeführt, ob eine Ausnahme abgefangen wird oder nicht.
  9. Drucken eines Textes auf der Konsole, der das Ergebnis der Divisionsoperation anzeigt.
  10. Ende des Try-Blocks, d. h. Ende des Fehlerbehandlungscodes.
  11. Ende der DivisionFunction-Unterprozedur.
  12. Beginn des Hauptteilverfahrens.
  13. Aufrufen der Unterprozedur „divisionFunction“. Hier werden die Werte der beiden ganzzahligen Argumente übergeben. Der Wert von n1=4 und n2=0. Das bedeutet, dass die Divisionsoperation 4\0, also n1\n2, sein wird.
  14. Das Konsolenfenster wird angehalten und wartet darauf, dass der Benutzer Maßnahmen ergreift, um es zu schließen.
  15. Ende des Hauptteilverfahrens.
  16. Ende des Moduls.

Benutzerdefinierte Ausnahmen in VB.Net

VB.NET ermöglicht es Ihnen, eigene Ausnahmen zu definieren. Sie können benutzerdefinierte Ausnahmeklassen von der Klasse ApplicationException abrufen. Lassen Sie uns dies anhand eines Beispiels veranschaulichen:

Beispiel einer benutzerdefinierten Ausnahme in VB.Net

Hier ist ein Beispiel für eine benutzerdefinierte Ausnahme in VB.NET:

Schritt 1) Erstellen Sie eine neue Konsolenanwendung.

Schritt 2) Verwenden Sie den folgenden Code:

Module Module1

    Public Class HeightIsZeroException : Inherits ApplicationException
        Public Sub New(ByVal text As String)
            MyBase.New(text)
        End Sub
    End Class
    Public Class Height
        Dim height As Integer = 0
        Sub showHeight()
            If (height = 0) Then
                Throw (New HeightIsZeroException("Zero Height found"))
            Else
                Console.WriteLine("Height is: {0}", height)
            End If
        End Sub
    End Class
    Sub Main()
        Dim hght As Height = New Height()
        Try
            hght.showHeight()
        Catch ex As HeightIsZeroException
            Console.WriteLine("HeightIsZeroException: {0}", ex.Message)
        End Try
        Console.ReadKey()
    End Sub

End Module

Schritt 3) Klicken Sie in der oberen Leiste auf die Schaltfläche „Start“, um den Code auszuführen. Sie sollten die folgende Ausgabe erhalten:

Die benutzerdefinierte VB.NET-Fehlermeldung HeightIsZeroException wurde in der Konsole ausgegeben.

Hier ist ein Screenshot des Codes:

Beispielcode für eine benutzerdefinierte Ausnahme-Klasse in VB.NET in Visual Studio

Erklärung von Code:

  1. Erstellen eines Moduls mit dem Namen Module1.
  2. Erstellen einer Ausnahmeklasse mit dem Namen HeightIsZeroException. Die Klasse erbt die gesamte ApplicationException-Klasse.
  3. Erstellen einer Unterprozedur mit dem Namen „Neu“. Es wird ein String-Argument mit dem Namen text benötigt.
  4. Aufrufen des Basisklassenkonstruktors und Übergeben des obigen Arguments an ihn.
  5. Ende des neuen Teilverfahrens.
  6. Ende der HeightIsZeroException-Klasse.
  7. Erstellen einer Klasse mit dem Namen Height. Sein öffentlicher Zugriffsmodifikator ist Public, was bedeutet, dass er öffentlich zugänglich ist.
  8. Erstellen einer ganzzahligen Variablen mit dem Namen „Height“ und Initialisieren ihres Werts auf 0.
  9. Erstellen einer Unterprozedur namens showHeight().
  10. Prüfen, wann der Wert der Variablen Höhe 0 ist. Wir haben die If…Then-Bedingung verwendet.
  11. Um die HeightIsZeroException auszulösen, wenn die obige Bedingung wahr ist. Die Meldung „Nullhöhe gefunden“ wird angezeigt, wenn diese Ausnahme ausgelöst wird.
  12. Der Else-Teil, der ausgeführt werden soll, wenn die If-Bedingung nicht wahr ist.
  13. Auf der Konsole auszudruckende Meldung, die die Höhe anzeigt, wenn sie nicht 0 ist.
  14. Ende der If-Bedingung.
  15. Ende der Unterprozedur showHeight().
  16. Ende der Klasse Höhe.
  17. Beginn des Hauptteilverfahrens.
  18. Erstellen eines Objekts mit dem Namen Height als Instanz der Height-Klasse.
  19. Beginn des Ausnahmebehandlungsblocks.
  20. Die in der Klasse `Height` definierte Unterprozedur `showHeight()` wird aufgerufen. Wir haben ein Objekt dieser Klasse verwendet, um auf diese Methode zuzugreifen. Diese Zeile kann eine Ausnahme auslösen. Daher haben wir sie mit einer Ausnahmebehandlungsroutine umschlossen.
  21. Abfangen der HeightIsZeroException-Ausnahme als Objekt ex, falls sie auftritt.
  22. Die Meldung, die auf der Konsole gedruckt werden soll, wenn die HeightIsZeroException abgefangen wird.
  23. Ende des Ausnahmebehandlungsblocks.
  24. Halten Sie das Konsolenfenster an und warten Sie darauf, dass ein Benutzer Maßnahmen ergreift, um es zu schließen.
  25. Ende des Hauptteilverfahrens.
  26. Ende des Moduls.

Ausnahme in VB.Net auslösen

Bei der Ausnahmebehandlung können Sie ein Objekt auslösen. Dieses Objekt muss jedoch direkt oder indirekt von der Klasse System.Exception abgeleitet sein. Zum Beispiel:

Beispiel einer Throw-Ausnahme in VB.Net

Nachfolgend ein Beispiel für eine throw-Exception in VB.NET:

Schritt 1) Erstellen Sie eine neue Konsolenanwendung.

Schritt 2) Verwenden Sie den folgenden Code:

Module Module1

    Sub Main()
        Try
            Throw New ApplicationException("Throwing a custom exception")
        Catch ex As Exception
            Console.WriteLine(ex.Message)
        Finally
            Console.WriteLine("The Finally Block")
        End Try
        Console.ReadKey()
    End Sub


End Module

Schritt 3) Klicken Sie in der oberen Leiste auf die Schaltfläche „Start“, um den Code auszuführen. Sie sollten Folgendes erhalten:

Konsolenausgabe der VB.NET-Throw-Anweisung mit Anzeige der benutzerdefinierten Ausnahmemeldung

Hier ist ein Screenshot des Codes:

VB.NET-Beispielcode zum Auslösen einer Ausnahme mit Try Catch Finally

Erklärung von Code:

  1. Erstellen eines Moduls mit dem Namen Module1.
  2. Beginn des Hauptteilverfahrens.
  3. Beginn des Fehlerbehandlungscodes.
  4. Auslösen eines Ausnahmeobjekts. Dieser Code kann eine Ausnahme erzeugen, daher haben wir ihn mit einem Try/Catch-Block umgeben.
  5. Eine Ausnahme als Objekt abfangen, z. B. wenn die Zeile eine Ausnahme auslöst.
  6. Drucken der Ausnahmemeldung auf der Konsole, falls sie auftritt.
  7. Der Final-Block wird ausgeführt, unabhängig davon, ob eine Ausnahme abgefangen wird oder nicht.
  8. Die Meldung, die auf der Konsole gedruckt werden soll, wenn der Final-Block ausgeführt wird.
  9. Ende des Ausnahmebehandlungscodes.
  10. Halten Sie die Konsole für eine Weile an und warten Sie darauf, dass ein Benutzer Maßnahmen ergreift, um sie zu schließen.
  11. Ende des Hauptteilverfahrens.
  12. Ende des Moduls.

Häufig gestellte Fragen

Ja. Ein Try-Block ist auch ohne Catch-Block gültig, solange er einen Finally-Block enthält. Dieser Try-Finally-Block führt Aufräumcode aus, behandelt die Ausnahme aber nicht selbst.

Ja. Erstellen Sie mehrere Catch-Blöcke zur Behandlung verschiedener Ausnahmetypen. Ordnen Sie diese vom spezifischsten zum allgemeinsten, da VB.NET sie der Reihe nach prüft und den ersten Treffer verwendet.

Fast immer. Die `finally`-Anweisung wird ausgeführt, unabhängig davon, ob eine Ausnahme abgefangen wurde oder nicht, und sogar nach einer `return`-Anweisung. Sie wird nur bei einer `End`-Anweisung oder einer `StackOverflowException` übersprungen.

Die Methode `throw` löst die aktuelle Ausnahme erneut aus und behält ihren ursprünglichen Stack bei. trace. Mit dem Befehl "Throw ex" wird der Stapel zurückgesetzt. tracFüge einen Fehler in die aktuelle Zeile ein und verberge so die eigentliche Fehlerursache. Verwende stattdessen die Option „Auslösen“.

Ein Syntaxfehler wird vom Compiler vor der Programmausführung abgefangen. Eine Ausnahme tritt zur Laufzeit während der Ausführung auf und kann mit einem Try-Catch-Block behandelt werden.

Häufige Ausnahmen sind DivideByZeroException, NullReferenceException, IndexOutOfRangeException, FormatException und OverflowException. Sie alle erben von System.Exception und können einzeln abgefangen werden.

Ja. GitHub-Copilot Wandelt einen Kommentar in natürlicher Sprache in einen vollständigen Try-Catch-Finally-Block um und schlägt den passenden Ausnahmetyp vor. Überprüfen Sie immer den generierten Handler.

Ja. Visual Studio IntelCode bietet kontextsensitive, zeilenweise Vervollständigungen für Catch-Klauseln und Ausnahmetypen, die aus Tausenden von Open-Source-Projekten gelernt wurden.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: