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:
Här är en skärmdump av koden:
Förklaring av kod:
- Skapa en modul som heter Module1.
- 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.
- Skapa en heltalsvariabel med namnet svar.
- Start av Try/Catch-blocket. Vi måste omge koden som vi misstänker kan skapa ett undantag med detta block.
- 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.
- Fånga undantaget som heter DivideByZeroException och tilldela det genererade undantagsmeddelandet till ex.
- Skriver ut lite text på konsolen för att informera användaren om typen/namnet på undantaget som togs upp.
- Blocket till slut. Detta kommer att utföras oavsett om ett undantag fångas eller inte.
- Skriver ut lite text på konsolen som visar resultatet av delningsoperationen.
- Slutet på Try-blocket, det vill säga slutet av felhanteringskoden.
- Slutet på delproceduren Funktion.
- Start av huvuddelproceduren.
- 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.
- Pausar konsolfönstret i väntan på att användaren ska vidta åtgärder för att stänga det.
- Slut på det huvudsakliga underförfarandet.
- 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:
Här är en skärmdump av koden:
Förklaring av kod:
- Skapa en modul som heter Module1.
- Skapar en undantagsklass med namnet HeightIsZeroException. Klassen ärver alla ApplicationException-klasser.
- Skapa en underprocedur med namnet New. Det kommer att ta ett strängargument som heter text.
- Anropar basklasskonstruktorn och skickar ovanstående argument till den.
- Slut på den nya underproceduren.
- Slutet på klassen HeightIsZeroException.
- Skapa en klass som heter Height. Dess public access modifier är Public, vilket betyder att den kommer att vara allmänt tillgänglig.
- Skapa en heltalsvariabel med namnet Height och initialisera dess värde till 0.
- Skapa en underprocedur med namnet showHeight().
- Kontrollerar när värdet på variabeln Height är 0. Vi har använt villkoret If...Then.
- Att kasta HeightIsZeroException om ovanstående villkor är sant. Meddelandet Zero Height Found kommer att visas när detta undantag kastas.
- Den andra delen som ska köras när If-villkoret inte är sant.
- Meddelande att skriva ut på konsolen som visar höjden när den inte är 0.
- Slut på If-villkoret.
- Slut på underproceduren showHeight().
- Slut på klassen Höjd.
- Start av huvuddelproceduren.
- Skapa ett objekt med namnet Height som en instans av klassen Height.
- Start av undantagshanteringsblocket.
- 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.
- Fånga HeightIsZeroException Exception som objekt ex om det inträffar.
- Meddelandet som ska skrivas ut på konsolen när HeightIsZeroException fångas.
- Slut på undantagshanteringsblocket.
- Pausa konsolfönstret och vänta på att en användare ska vidta åtgärder för att stänga det.
- Slut på det huvudsakliga underförfarandet.
- 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:
Här är en skärmdump av koden:
Förklaring av kod:
- Skapa en modul som heter Module1.
- Start av huvuddelproceduren.
- Start av felhanteringskoden.
- Kasta ett undantagsobjekt. Den här koden kan generera ett undantag och därför har vi omgett den med ett Try/Catch-block.
- Fånga ett undantag som objekt ex om linjen ger ett undantag.
- Skriver ut undantagsmeddelandet på konsolen om det skulle inträffa.
- Blocket Slutligen för att köra oavsett om ett undantag fångas eller inte.
- Meddelandet som ska skrivas ut på konsolen när Finally-blocket körs.
- Slut på undantagshanteringskoden.
- Pausa konsolen en stund och vänta på att en användare ska vidta åtgärder för att stänga den.
- Slut på det huvudsakliga underförfarandet.
- 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.