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 optreedt 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 zal een uitzondering worden gemaakt.

Wat is uitzonderingsafhandeling in VB.Net?

Met uitzonderingen erin VB.Netkunt u de besturing van een programma van het ene onderdeel naar het andere overbrengen. In VB.Net worden uitzonderingen afgehandeld met behulp van de following 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.
Tot slot 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 knop Start in de werkbalk om de code uit te voeren. Je zou het volgende moeten krijgenwing output:

uitzondering Handling

Hier is een screenshot van de code:

uitzondering Handling

Verklaring van code:

  1. Een module maken met de naam Module1.
  2. 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.
  3. Een geheel getalvariabele maken met de naam antwoord.
  4. Begin van het Try/Catch-blok. We moeten de code omringen waarvan we vermoeden dat deze een uitzondering kan opleveren met dit blok.
  5. Het uitvoeren van een delingsoperatie tussen de waarden van variabelen n1 en n2. Het resultaat van de delingsbewerking wordt toegewezen aan het variabele antwoord. Deze code kan bijvoorbeeld een uitzondering opleveren als we een getal delen door nul. Daarom hebben we het omringd met de Try/Catch-blokken.
  6. Het opvangen van de uitzondering met de naam DivideByZeroException en het toewijzen van het gegenereerde uitzonderingsbericht aan de ex.
  7. 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.
  8. Het Eindelijk-blok. Dit wordt uitgevoerd, ongeacht of er een uitzondering wordt opgevangen of niet.
  9. Een stukje tekst afdrukken op de console-showing het resultaat van de splitsingsoperatie.
  10. Einde van het Try-blok, dat wil zeggen het einde van de foutafhandelingscode.
  11. Einde van de deelprocedure divisieFunctie.
  12. Start van de hoofdsubprocedure.
  13. Subprocedure divisieFunctie oproepen/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.
  14. Het consolevenster pauzeren, wachtend tot de gebruiker actie onderneemt om het te sluiten.
  15. Einde van de hoofdsubprocedure.
  16. 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 volgendewing 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. Je zou het volgende moeten krijgenwing output:

Door de gebruiker gedefinieerde uitzondering

Hier is een screenshot van de code:

Door de gebruiker gedefinieerde uitzondering

Verklaring van code:

  1. Een module maken met de naam Module1.
  2. Een uitzonderingsklasse maken met de naam HeightIsZeroException. De klasse neemt de volledige klasse ApplicationException over.
  3. Een subprocedure maken met de naam Nieuw. Er is één stringargument nodig met de naam tekst.
  4. De constructor van de basisklasse aanroepen en het bovenstaande argument doorgeven.
  5. Einde van de Nieuwe subprocedure.
  6. Einde van de klasse HeightIsZeroException.
  7. Een klasse maken met de naam Hoogte. De modifier voor openbare toegang is Openbaar, wat betekent dat deze openbaar toegankelijk zal zijn.
  8. Een integer-variabele met de naam Height maken en de waarde ervan initialiseren op 0.
  9. Een subprocedure maken met de naam showHeight().
  10. Controleren of de waarde van de variabele Hoogte 0 is. We hebben de voorwaarde If…Then gebruikt.
  11. Om de HeightIsZeroException te genereren als de bovenstaande voorwaarde waar is. Het bericht Zero Height Found wordt weergegeven wanneer deze uitzondering wordt gegenereerd.
  12. Het Else-gedeelte dat moet worden uitgevoerd als de If-voorwaarde niet waar is.
  13. Bericht om af te drukken op de console-showing de Hoogte als deze niet 0 is.
  14. Einde van de If-voorwaarde.
  15. Einde van de subprocedure showHeight().
  16. Einde van de les Hoogte.
  17. Start van de hoofdsubprocedure.
  18. Een object met de naam Height maken als een exemplaar van de klasse Height.
  19. Begin van het uitzonderingsafhandelingsblok.
  20. 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.
  21. Het opvangen van de HeightIsZeroException-uitzondering als object ex voor het geval deze zich voordoet.
  22. Het bericht dat op de console moet worden afgedrukt wanneer de HeightIsZeroException wordt opgevangen.
  23. Einde van het uitzonderingsafhandelingsblok.
  24. Pauzeer het consolevenster, wachtend tot een gebruiker actie onderneemt om het te sluiten.
  25. Einde van de hoofdsubprocedure.
  26. 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 volgendewing 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. Je zou het volgende moeten krijgenwing:

Gooi uitzondering

Hier is een screenshot van de code:

Gooi uitzondering

Verklaring van code:

  1. Een module maken met de naam Module1.
  2. Start van de hoofdsubprocedure.
  3. Begin van de foutafhandelingscode.
  4. doorgaandwing een uitzonderingsobject. Deze code kan een uitzondering genereren en daarom hebben we deze omgeven met een Try/Catch-blok.
  5. Een uitzondering opvangen als object ex als de regel een uitzondering genereert.
  6. Het uitzonderingsbericht afdrukken op de console voor het geval dit zich voordoet.
  7. Het Eindelijk-blok dat moet worden uitgevoerd, ongeacht of er een uitzondering wordt opgevangen of niet.
  8. Het bericht dat op de console moet worden afgedrukt wanneer het blok Eindelijk wordt uitgevoerd.
  9. Einde van de uitzonderingsverwerkingscode.
  10. Pauzeer de console een tijdje en wacht tot een gebruiker actie onderneemt om deze te sluiten.
  11. Einde van de hoofdsubprocedure.
  12. Einde van de module.

Samengevat

  • 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.