Afhandeling van uitzonderingen in VB.Net: voorbeelden van try & catch-afhandeling
Wat is een uitzondering in VB.Net?
An uitzondering in VB.Net verwijst naar een probleem dat ontstaat tijdens de uitvoering van een programma. Het wordt veroorzaakt door een onverwachte omstandigheid. Een goed voorbeeld is wanneer u een deling uitvoert en vervolgens deelt door nul (0). Er wordt een uitzondering gegenereerd.
Wat is uitzonderingsafhandeling in VB.Net?
Met uitzonderingen erin VB.Net, kunt u de controle over een programma van het ene deel naar het andere overdragen. In VB.Net worden uitzonderingen afgehandeld met behulp van de volgende 4 trefwoorden:
Keyword | Detail |
---|---|
Probeer | Het werk van het Try-blok is het identificeren van het codeblok waarvoor een specifieke uitzondering wordt geactiveerd. Het moet worden gevolgd door (een) catch-blok(ken). |
het worstelen | Het opvangen van de uitzondering gebeurt in dit blok. Het is een uitzonderingshandler waarin de uitzondering wordt afgehandeld. |
Eindelijk | Gebruik het blok Eindelijk om een reeks instructies uit te voeren, ongeacht of er een uitzondering is opgetreden of niet. |
Gooien | Er wordt een uitzondering gegenereerd nadat er een probleem is opgetreden. Dit is het werk van het trefwoord Throw. |
Syntaxis van Try Catch in VB.Net
De Try Catch-instructies in VB.Net worden gedefinieerd met behulp van de onderstaande syntaxis:
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
Het Try/Catch-blok moet de code omringen die mogelijk een uitzondering veroorzaakt. Deze code staat bekend als een beveiligde code. U kunt meerdere catch-instructies gebruiken als u verschillende soorten uitzonderingen moet opvangen.
Voorbeeld van afhandeling van uitzonderingen in VB.Net met Try Catch en Final
Met de Try/Catch-instructies kunt u uw gewone programmacode scheiden van het foutafhandelingssysteem. Laten we demonstreren hoe u met een uitzondering omgaat met behulp van de trefwoorden Try, Catch en Eindelijk.
Stap 1) Maak een nieuwe consoletoepassing.
Stap 2) Gebruik deze 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
Stap 3) Klik op de Start-knop in de werkbalk om de code uit te voeren. U zou de volgende uitvoer moeten krijgen:
Hier is een screenshot van de code:
Verklaring van code:
- Een module maken met de naam Module1.
- Een subprocedure maken met de naam divisieFunction met twee integer-argumenten n1 en n2. De ByVal is een VB.Net-sleutelwoord dat aangeeft dat de waarden van de argumenten per waarde worden doorgegeven.
- Een geheel getalvariabele maken met de naam antwoord.
- Begin van het Try/Catch-blok. We moeten de code omringen waarvan we vermoeden dat deze een uitzondering kan opleveren met dit blok.
- Een delingsbewerking uitvoeren tussen de waarden van variabelen n1 en n2. Het resultaat van de delingsbewerking wordt toegewezen aan de variabele answer. Deze code kan een uitzondering veroorzaken, bijvoorbeeld wanneer we een getal delen door nul, daarom hebben we het omgeven met de Try/Catch-blokken.
- Het opvangen van de uitzondering met de naam DivideByZeroException en het toewijzen van het gegenereerde uitzonderingsbericht aan de ex.
- Het afdrukken van wat tekst op de console om de gebruiker op de hoogte te stellen van het type/de naam van de uitzondering die is opgetreden.
- Het Eindelijk-blok. Dit wordt uitgevoerd, ongeacht of er een uitzondering wordt opgevangen of niet.
- Er wordt een tekst op de console afgedrukt met het resultaat van de deling.
- Einde van het Try-blok, dat wil zeggen het einde van de foutafhandelingscode.
- Einde van de deelprocedure divisieFunctie.
- Start van de hoofdsubprocedure.
- De divisionFunction-subprocedure aanroepen/aanroepen. De waarden van de twee integer-argumenten worden hier doorgegeven. De waarde van n1=4 en n2=0. Dit betekent dat de delingsbewerking 4\0 zal zijn, dat wil zeggen n1\n2.
- Het consolevenster pauzeren, wachtend tot de gebruiker actie onderneemt om het te sluiten.
- Einde van de hoofdsubprocedure.
- Einde van de module.
Door de gebruiker gedefinieerde uitzonderingen in VB.Net
Met VB.Net kunt u uw eigen uitzonderingen definiëren. U kunt door de gebruiker gedefinieerde uitzonderingsklassen ophalen uit de klasse ApplicationException. Laten we dit aantonen met een voorbeeld:
Voorbeeld van door de gebruiker gedefinieerde uitzondering in VB.Net
Hier is een voorbeeld van een door de gebruiker gedefinieerde uitzondering in VB.Net:
Stap 1) Maak een nieuwe consoletoepassing.
Stap 2) Gebruik de volgende 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
Stap 3) Klik op de Start-knop in de bovenste balk om de code uit te voeren. U zou de volgende uitvoer moeten krijgen:
Hier is een screenshot van de code:
Verklaring van code:
- Een module maken met de naam Module1.
- Een uitzonderingsklasse maken met de naam HeightIsZeroException. De klasse neemt de volledige klasse ApplicationException over.
- Een subprocedure maken met de naam Nieuw. Er is één stringargument nodig met de naam tekst.
- De constructor van de basisklasse aanroepen en het bovenstaande argument doorgeven.
- Einde van de Nieuwe subprocedure.
- Einde van de klasse HeightIsZeroException.
- Een klasse maken met de naam Hoogte. De modifier voor openbare toegang is Openbaar, wat betekent dat deze openbaar toegankelijk zal zijn.
- Een integer-variabele met de naam Height maken en de waarde ervan initialiseren op 0.
- Een subprocedure maken met de naam showHeight().
- Controleren of de waarde van de variabele Hoogte 0 is. We hebben de voorwaarde If…Then gebruikt.
- Om de HeightIsZeroException te genereren als de bovenstaande voorwaarde waar is. Het bericht Zero Height Found wordt weergegeven wanneer deze uitzondering wordt gegenereerd.
- Het Else-gedeelte dat moet worden uitgevoerd als de If-voorwaarde niet waar is.
- Bericht dat op de console moet worden afgedrukt en waarin de hoogte wordt weergegeven wanneer deze niet 0 is.
- Einde van de If-voorwaarde.
- Einde van de subprocedure showHeight().
- Einde van de les Hoogte.
- Start van de hoofdsubprocedure.
- Een object met de naam Height maken als een exemplaar van de klasse Height.
- Begin van het uitzonderingsafhandelingsblok.
- Het aanroepen van de subprocedure showHeight() die is gedefinieerd in de klasse Height. We hebben een object van deze klasse gebruikt om toegang te krijgen tot deze methode. Deze regel kan tot een uitzondering leiden. Daarom hebben we er een uitzonderingsafhandelingscode omheen geplaatst.
- Het opvangen van de HeightIsZeroException-uitzondering als object ex voor het geval deze zich voordoet.
- Het bericht dat op de console moet worden afgedrukt wanneer de HeightIsZeroException wordt opgevangen.
- Einde van het uitzonderingsafhandelingsblok.
- Pauzeer het consolevenster, wachtend tot een gebruiker actie onderneemt om het te sluiten.
- Einde van de hoofdsubprocedure.
- Einde van de module.
Gooi een uitzondering in VB.Net
Bij het afhandelen van uitzonderingen kunt u ervoor kiezen een object te gooien. Het object moet echter zijn afgeleid van System. Uitzonderingsklasse, direct of indirect. Bijvoorbeeld:
Voorbeeld van een throw-uitzondering in VB.Net
Hieronder ziet u een voorbeeld van een throw-uitzondering in VB.Net:
Stap 1) Maak een nieuwe consoletoepassing.
Stap 2) Gebruik de volgende 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
Stap 3) Klik op de Start-knop in de bovenste balk om de code uit te voeren. U zou het volgende moeten krijgen:
Hier is een screenshot van de code:
Verklaring van code:
- Een module maken met de naam Module1.
- Start van de hoofdsubprocedure.
- Begin van de foutafhandelingscode.
- Een uitzonderingsobject gooien. Deze code kan een uitzondering genereren, daarom hebben we het omgeven met een Try/Catch-blok.
- Een uitzondering opvangen als object ex als de regel een uitzondering genereert.
- Het uitzonderingsbericht afdrukken op de console voor het geval dit zich voordoet.
- Het Eindelijk-blok dat moet worden uitgevoerd, ongeacht of er een uitzondering wordt opgevangen of niet.
- Het bericht dat op de console moet worden afgedrukt wanneer het blok Eindelijk wordt uitgevoerd.
- Einde van de uitzonderingsverwerkingscode.
- Pauzeer de console een tijdje en wacht tot een gebruiker actie onderneemt om deze te sluiten.
- Einde van de hoofdsubprocedure.
- Einde van de module.
Samenvatting
- Een uitzondering verwijst naar een probleem dat optreedt tijdens de uitvoering van een programma, veroorzaakt door een onverwachte omstandigheid.
- Als u vermoedt dat bepaalde code een uitzondering zal genereren, omringt u deze met een Try/Catch-blok.
- Het Eindelijk-blok komt na het Try/Catch-blok en wordt uitgevoerd, ongeacht of er een uitzondering wordt opgevangen of niet.
- Met VB.Net kunnen we aangepaste uitzonderingen maken.