Undantagshantering i VB.Net: Prova och fånga hanteringsexempel

Vad är ett undantag i VB.Net?

An undantag i VB.Net hänvisar till ett problem som uppstår under programexekveringen. Det orsakas av en oväntad omständighet. Ett bra exempel är när du utför en divisionsoperation och sedan dividerar med noll (0). Ett undantag kommer att tas upp.

Vad är undantagshantering i VB.Net?

Med undantag i VB.Net, kan du överföra kontrollen av ett program från en del till en annan. I VB.Net hanteras undantag med följande fyra nyckelord:

Nyckelord Detalj
Prova Arbetet med Try-blocket är att identifiera kodblocket för vilket ett specifikt undantag kommer att aktiveras. Den ska följas av ett fångstblock.
brottning Fånga av undantaget görs i detta block. Det är en undantagshanterare där undantaget hanteras.
Slutligen Använd Finally-blocket för att köra en uppsättning satser oavsett om ett undantag har inträffat eller inte.
Kasta Ett undantag görs efter att ett problem har uppstått. Detta är arbetet med nyckelordet Throw.

Syntax för Try Catch i VB.Net

Try Catch-satserna i VB.Net definieras med hjälp av nedanstående 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

Try/Catch-blocket bör omge koden som kan leda till ett undantag. Denna kod är känd som en skyddad kod. Du kan använda flera catch-satser när du behöver fånga olika typer av undantag.

Exception Hantering Exempel i VB.Net med Try Catch och Finally

Med Try/Catch-satserna kan du separera din vanliga programkod från felhanteringssystemet. Låt oss visa hur man hanterar ett undantag med hjälp av nyckelorden Try, Catch och Finally.

Steg 1) Skapa en ny konsolapplikation.

Steg 2) Använd den här koden:

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

Steg 3) Klicka på Start-knappen i verktygsfältet för att köra koden. Du bör få följande utdata:

Undantagshantering

Här är en skärmdump av koden:

Undantagshantering

Förklaring av kod:

  1. Skapa en modul som heter Module1.
  2. Skapa en underprocedur som heter divisionFunction med två heltalsargument n1 och n2. ByVal är ett VB.Net nyckelord som anger att värdena för argumenten kommer att skickas av värde.
  3. Skapa en heltalsvariabel med namnet svar.
  4. Start av Try/Catch-blocket. Vi måste omge koden som vi misstänker kan skapa ett undantag med detta block.
  5. Utföra en divisionsoperation mellan värdena för variablerna n1 och n2. Resultatet av divisionsoperationen tilldelas variabelsvaret. Den här koden kan skapa ett undantag, till exempel när vi dividerar ett tal med noll, därför har vi omgett det med Try/Catch-blocken.
  6. Fånga undantaget som heter DivideByZeroException och tilldela det genererade undantagsmeddelandet till ex.
  7. Skriver ut lite text på konsolen för att informera användaren om typen/namnet på undantaget som togs upp.
  8. Blocket till slut. Detta kommer att utföras oavsett om ett undantag fångas eller inte.
  9. Skriver ut lite text på konsolen som visar resultatet av delningsoperationen.
  10. Slutet på Try-blocket, det vill säga slutet av felhanteringskoden.
  11. Slutet på delproceduren Funktion.
  12. Start av huvuddelproceduren.
  13. Anropa/anropa underproceduren divisionFunction. Värdena för de två heltalsargumenten skickas här. Värdet på n1=4 och n2=0. Detta innebär att divisionsoperationen blir 4\0, det vill säga n1\n2.
  14. Pausar konsolfönstret i väntan på att användaren ska vidta åtgärder för att stänga det.
  15. Slut på det huvudsakliga underförfarandet.
  16. Slutet på modulen.

Användardefinierade undantag i VB.Net

VB.Net låter dig definiera dina egna undantag. Du kan få användardefinierade undantagsklasser från ApplicationException-klassen. Låt oss visa detta med ett exempel:

Exempel på användardefinierat undantag i VB.Net

Här är ett exempel på användardefinierat undantag i VB.Net:

Steg 1) Skapa en ny konsolapplikation.

Steg 2) Använd följande kod:

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

Steg 3) Klicka på Start-knappen i det övre fältet för att köra koden. Du bör få följande utdata:

Användardefinierat undantag

Här är en skärmdump av koden:

Användardefinierat undantag

Förklaring av kod:

  1. Skapa en modul som heter Module1.
  2. Skapar en undantagsklass med namnet HeightIsZeroException. Klassen ärver alla ApplicationException-klasser.
  3. Skapa en underprocedur med namnet New. Det kommer att ta ett strängargument som heter text.
  4. Anropar basklasskonstruktorn och skickar ovanstående argument till den.
  5. Slut på den nya underproceduren.
  6. Slutet på klassen HeightIsZeroException.
  7. Skapa en klass som heter Height. Dess public access modifier är Public, vilket betyder att den kommer att vara allmänt tillgänglig.
  8. Skapa en heltalsvariabel med namnet Height och initialisera dess värde till 0.
  9. Skapa en underprocedur med namnet showHeight().
  10. Kontrollerar när värdet på variabeln Height är 0. Vi har använt villkoret If...Then.
  11. Att kasta HeightIsZeroException om ovanstående villkor är sant. Meddelandet Zero Height Found kommer att visas när detta undantag kastas.
  12. Den andra delen som ska köras när If-villkoret inte är sant.
  13. Meddelande att skriva ut på konsolen som visar höjden när den inte är 0.
  14. Slut på If-villkoret.
  15. Slut på underproceduren showHeight().
  16. Slut på klassen Höjd.
  17. Start av huvuddelproceduren.
  18. Skapa ett objekt med namnet Height som en instans av klassen Height.
  19. Start av undantagshanteringsblocket.
  20. Anropar underproceduren showHeight() definierad i klassen Height. Vi har använt ett objekt av den här klassen för att komma åt den här metoden. Denna linje kan leda till ett undantag. Därför har vi omgett den med en undantagshanteringskod.
  21. Fånga HeightIsZeroException Exception som objekt ex om det inträffar.
  22. Meddelandet som ska skrivas ut på konsolen när HeightIsZeroException fångas.
  23. Slut på undantagshanteringsblocket.
  24. Pausa konsolfönstret och vänta på att en användare ska vidta åtgärder för att stänga det.
  25. Slut på det huvudsakliga underförfarandet.
  26. Slutet på modulen.

Kasta undantag i VB.Net

I undantagshantering kan du välja att kasta ett objekt. Objektet måste dock härledas från System. Undantagsklass, direkt eller indirekt. Till exempel:

Exempel på kastundantag i VB.Net

Nedan är ett exempel på throw-undantag i VB.Net:

Steg 1) Skapa en ny konsolapplikation.

Steg 2) Använd följande kod:

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

Steg 3) Klicka på Start-knappen i det övre fältet för att köra koden. Du bör få följande:

Kasta undantag

Här är en skärmdump av koden:

Kasta undantag

Förklaring av kod:

  1. Skapa en modul som heter Module1.
  2. Start av huvuddelproceduren.
  3. Start av felhanteringskoden.
  4. Kasta ett undantagsobjekt. Den här koden kan generera ett undantag och därför har vi omgett den med ett Try/Catch-block.
  5. Fånga ett undantag som objekt ex om linjen ger ett undantag.
  6. Skriver ut undantagsmeddelandet på konsolen om det skulle inträffa.
  7. Blocket Slutligen för att köra oavsett om ett undantag fångas eller inte.
  8. Meddelandet som ska skrivas ut på konsolen när Finally-blocket körs.
  9. Slut på undantagshanteringskoden.
  10. Pausa konsolen en stund och vänta på att en användare ska vidta åtgärder för att stänga den.
  11. Slut på det huvudsakliga underförfarandet.
  12. Slutet på modulen.

Sammanfattning

  • Ett undantag hänvisar till ett problem som uppstår under programexekveringen orsakat av en oväntad omständighet.
  • Om du misstänker att någon kod kommer att generera ett undantag, omge den med ett Try/Catch-block.
  • Finally-blocket kommer efter Try/Catch-blocket och körs oavsett om ett undantag fångas eller inte.
  • VB.Net tillåter oss att skapa anpassade undantag.