Versuchen Sie ... Catch ... Schließlich wird eine benutzerdefinierte Ausnahme in VB.Net ausgelöst

Inhaltsverzeichnis:

Anonim

Was ist eine Ausnahme?

Eine Ausnahme 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 ausführen und dann durch Null (0) dividieren. Eine Ausnahme wird ausgelöst.

In diesem Visual Basic-Tutorial lernen Sie:

  • Was ist eine Ausnahme?
  • Was ist Ausnahmebehandlung?
  • Syntax von Try / Catch
  • Beispiel für den Umgang mit Ausnahmen
  • Benutzerdefinierte Ausnahmen
  • Objekte werfen

Was ist Ausnahmebehandlung?

Mit Ausnahmen können Sie die Steuerung eines Programms von einem Teil auf einen anderen übertragen. In VB.NET werden Ausnahmen mit den folgenden 4 Schlüsselwörtern behandelt:

Stichwort Detail
Versuchen Die Arbeit des Try-Blocks besteht darin, den Codeblock zu identifizieren, für den eine bestimmte Ausnahme aktiviert wird. Es sollten ein oder mehrere Fangblöcke folgen.
Fang Das Abfangen der Ausnahme erfolgt in diesem Block. Es ist ein Ausnahmebehandler, in dem die Ausnahme behandelt wird.
Endlich Verwenden Sie den Block finally, 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.

Syntax von Try / Catch

Die Try / Catch-Anweisungen haben die folgende Syntax:

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 den Umgang mit Ausnahmen

Mit den Try / Catch-Anweisungen können Sie Ihren normalen Programmcode vom Fehlerbehandlungssystem trennen. Lassen Sie uns anhand der Schlüsselwörter Try, Catch und finally zeigen, wie eine Ausnahme behandelt wird.

Schritt 1) Erstellen Sie eine neue Konsolenanwendung.

Schritt 2) Verwenden Sie diesen Code:

Module Module1Sub divisionFunction(ByVal n1 As Integer, ByVal n2 As Integer)Dim answer As IntegerTryanswer = n1 \ n2Catch ex As DivideByZeroExceptionConsole.WriteLine("Exception: {0}", ex)FinallyConsole.WriteLine("Answer is: {0}", answer)End TryEnd SubSub Main()divisionFunction(4, 0)Console.ReadKey()End SubEnd Module

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

Hier ist ein Screenshot des Codes:

Erklärung des Codes:

  1. Erstellen eines Moduls mit dem Namen Module1.
  2. Erstellen einer Unterprozedur mit dem Namen 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 answer.
  4. Start des Try / Catch-Blocks. Wir müssen den Code umgeben, von dem wir vermuten, dass er mit diesem Block eine Ausnahme auslöst.
  5. Durchführen einer Teilungsoperation zwischen den Werten der Variablen n1 und n2. Das Ergebnis der Divisionsoperation wird der variablen Antwort zugeordnet. Dieser Code kann eine Ausnahme auslösen, wenn wir beispielsweise eine Zahl durch Null teilen und sie daher mit den Try / Catch-Blöcken umgeben haben.
  6. Abfangen der Ausnahme mit dem Namen 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 Endlich-Block. Dadurch wird ausgeführt, ob eine Ausnahme abgefangen wird oder nicht.
  9. Drucken von Text auf der Konsole mit dem Ergebnis der Teilungsoperation.
  10. Ende des Try-Blocks, dh Ende des Fehlerbehandlungscodes.
  11. Ende der DivisionFunction-Unterprozedur.
  12. Start der Hauptunterprozedur.
  13. Aufrufen / Aufrufen der DivisionFunction-Unterprozedur. Hier werden die Werte der beiden Ganzzahlargumente übergeben. Der Wert von n1 = 4 und n2 = 0. Dies bedeutet, dass die Teilungsoperation 4 \ 0 ist, dh n1 \ n2.
  14. Anhalten des Konsolenfensters, während darauf gewartet wird, dass der Benutzer Maßnahmen zum Schließen des Konsolenfensters ergreift.
  15. Ende der Hauptunterprozedur.
  16. Ende des Moduls.

Benutzerdefinierte Ausnahmen

Mit VB.NET können Sie Ihre eigenen Ausnahmen definieren. Sie können benutzerdefinierte Ausnahmeklassen aus der ApplicationException-Klasse abrufen. Lassen Sie uns dies anhand eines Beispiels demonstrieren:

Schritt 1) Erstellen Sie eine neue Konsolenanwendung.

Schritt 2) Verwenden Sie den folgenden Code:

Module Module1Public Class HeightIsZeroException : Inherits ApplicationExceptionPublic Sub New(ByVal text As String)MyBase.New(text)End SubEnd ClassPublic Class HeightDim height As Integer = 0Sub showHeight()If (height = 0) ThenThrow (New HeightIsZeroException("Zero Height found"))ElseConsole.WriteLine("Height is: {0}", height)End IfEnd SubEnd ClassSub Main()Dim hght As Height = New Height()Tryhght.showHeight()Catch ex As HeightIsZeroExceptionConsole.WriteLine("HeightIsZeroException: {0}", ex.Message)End TryConsole.ReadKey()End SubEnd 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:

Hier ist ein Screenshot des Codes:

Erklärung des Codes:

  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 Zeichenfolgenargument mit dem Namen text benötigt.
  4. Aufruf des Basisklassenkonstruktors und Übergabe des obigen Arguments an ihn.
  5. Ende der neuen Unterprozedur.
  6. Ende der HeightIsZeroException-Klasse.
  7. Erstellen einer Klasse mit dem Namen "Höhe". Der Modifikator für den öffentlichen Zugriff lautet "Öffentlich". Dies bedeutet, dass er öffentlich zugänglich sein wird.
  8. Erstellen einer Ganzzahlvariablen mit dem Namen Height und Initialisieren ihres Werts auf 0.
  9. Erstellen einer Unterprozedur mit dem Namen showHeight ().
  10. Überprüfen, ob der Wert der Variablen Height 0 ist. Wir haben die If… Then-Bedingung verwendet.
  11. Auslösen der HeightIsZeroException, wenn die obige Bedingung erfüllt ist. Die Meldung Zero Height Found wird angezeigt, wenn diese Ausnahme ausgelöst wird.
  12. Der andere Teil, der ausgeführt werden soll, wenn die If-Bedingung nicht erfüllt ist.
  13. Auf der Konsole zu druckende Nachricht mit der Höhe, wenn sie nicht 0 ist.
  14. Ende der If-Bedingung.
  15. Ende der Unterprozedur showHeight ().
  16. Ende der Klasse Höhe.
  17. Start der Hauptunterprozedur.
  18. Erstellen eines Objekts mit dem Namen Height als Instanz der Height-Klasse.
  19. Start des Ausnahmebehandlungsblocks.
  20. Aufrufen der in der Height-Klasse definierten Unterprozedur showHeight (). Wir haben ein Objekt dieser Klasse verwendet, um auf diese Methode zuzugreifen. Diese Zeile kann zu einer Ausnahme führen. Daher haben wir es mit einem Ausnahmebehandlungscode umgeben.
  21. Abfangen der HeightIsZeroException-Ausnahme als Objekt-Ex, falls sie auftritt.
  22. Die Nachricht, 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, bis ein Benutzer Maßnahmen zum Schließen des Konsolenfensters ergreift.
  25. Ende der Hauptunterprozedur.
  26. Ende des Moduls.

Objekte werfen

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

Schritt 1) Erstellen Sie eine neue Konsolenanwendung.

Schritt 2) Verwenden Sie den folgenden Code:

Module Module1Sub Main()TryThrow New ApplicationException("Throwing a custom exception")Catch ex As ExceptionConsole.WriteLine(ex.Message)FinallyConsole.WriteLine("The Finally Block")End TryConsole.ReadKey()End SubEnd Module

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

Hier ist ein Screenshot des Codes:

Erklärung des Codes:

  1. Erstellen eines Moduls mit dem Namen Module1.
  2. Start der Hauptunterprozedur.
  3. Start des Fehlerbehandlungscodes.
  4. Ein Ausnahmeobjekt auslösen. Dieser Code kann eine Ausnahme erzeugen, daher haben wir ihn mit einem Try / Catch-Block umgeben.
  5. Abfangen einer Ausnahme als Objekt ex, wenn die Zeile eine Ausnahme auslöst.
  6. Drucken der Ausnahmemeldung auf der Konsole, falls sie auftritt.
  7. Der Endlich-Block, um auszuführen, ob eine Ausnahme abgefangen wird oder nicht.
  8. Die Nachricht, die auf der Konsole gedruckt werden soll, wenn der Block "Endlich" ausgeführt wird.
  9. Ende des Ausnahmebehandlungscodes.
  10. Halten Sie die Konsole für eine Weile an und warten Sie, bis ein Benutzer Maßnahmen zum Schließen der Konsole ergriffen hat.
  11. Ende der Hauptunterprozedur.
  12. Ende des Moduls.

Zusammenfassung

  • Eine Ausnahme bezieht sich auf ein Problem, das während der Programmausführung aufgrund eines unerwarteten Umstands auftritt.
  • Wenn Sie den Verdacht haben, dass ein Code eine Ausnahme generiert, umgeben Sie ihn mit einem Try / Catch-Block.
  • Der Block finally kommt nach dem Try / Catch-Block und führt aus, ob eine Ausnahme abgefangen wird oder nicht.
  • Mit VB.NET können wir benutzerdefinierte Ausnahmen erstellen.