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: