Undtagelseshåndtering i VB.Net: Prøv & Catch-håndteringseksempler
Hvad er en undtagelse i VB.Net?
An undtagelse i VB.Net henviser til et problem, der opstår under programafvikling. Det er forårsaget af en uventet omstændighed. Et godt eksempel er, når du udfører en divisionsoperation, og så dividerer du med nul (0). En undtagelse vil blive rejst.
Hvad er undtagelseshåndtering i VB.Net?
Med undtagelser i VB.Net, kan du overføre styringen af et program fra en del til en anden. I VB.Net håndteres undtagelser ved hjælp af følgende 4 nøgleord:
Søgeord | Detalje |
---|---|
Prøv | Try-blokkens arbejde er at identificere den kodeblok, for hvilken en specifik undtagelse vil blive aktiveret. Den skal efterfølges af en fangeblok(er). |
brydning | Indfangning af undtagelsen sker i denne blok. Det er en undtagelseshandler, hvor undtagelsen håndteres. |
Endelig | Brug Finally-blokken til at køre et sæt sætninger, uanset om der er sket en undtagelse eller ej. |
Kast | En undtagelse er kastet efter forekomsten af et problem. Dette er værket af Throw nøgleordet. |
Syntaks for Try Catch i VB.Net
Try Catch-sætningerne i VB.Net er defineret ved hjælp af nedenstående syntaks:
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-blokken skal omgive koden, der kan give anledning til en undtagelse. Denne kode er kendt som en beskyttet kode. Du kan bruge flere catch-udsagn, når du skal fange forskellige typer undtagelser.
Eksempel på undtagelseshåndtering i VB.Net med Try Catch og Finally
Med Try/Catch-sætningerne kan du adskille din almindelige programkode fra fejlhåndteringssystemet. Lad os demonstrere, hvordan man håndterer en undtagelse ved hjælp af nøgleordene Try, Catch og Endelig.
Trin 1) Opret en ny konsolapplikation.
Trin 2) Brug denne kode:
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
Trin 3) Klik på knappen Start på værktøjslinjen for at udføre koden. Du bør få følgende output:
Her er et skærmbillede af koden:
Forklaring af kode:
- Oprettelse af et modul ved navn Modul1.
- Oprettelse af en underprocedure ved navn divisionFunction med to heltalsargumenter n1 og n2. ByVal er et VB.Net nøgleord, der angiver, at værdierne af argumenterne vil blive videregivet af værdi.
- Oprettelse af en heltalsvariabel med navnet svar.
- Start af Try/Catch-blokken. Vi er nødt til at omgive koden, som vi har mistanke om kan rejse en undtagelse med denne blok.
- Udførelse af en divisionsoperation mellem værdierne af variable n1 og n2. Resultatet af divisionsoperationen tildeles variabelsvaret. Denne kode kan rejse en undtagelse, for eksempel når vi dividerer et tal med nul, derfor har vi omgivet det med Try/Catch-blokkene.
- At fange undtagelsen ved navn DivideByZeroException og tildele den genererede undtagelsesmeddelelse til ex.
- Udskrivning af tekst på konsollen for at underrette brugeren om typen/navnet på den undtagelse, der blev rejst.
- Endelig blok. Dette vil udføre, uanset om en undtagelse er fanget eller ej.
- Udskriver noget tekst på konsollen, der viser resultatet af opdelingen.
- Slut på Try-blokken, det vil sige slutningen af fejlhåndteringskoden.
- Afslutning af divisionen Funktions underprocedure.
- Start af hovedunderproceduren.
- Kald/påkaldelse af divisionFunction underproceduren. Værdierne af de to heltalsargumenter sendes her. Værdien af n1=4 og n2=0. Dette betyder, at divisionsoperationen vil være 4\0, det vil sige n1\n2.
- Sætter konsolvinduet på pause og venter på, at brugeren foretager handling for at lukke det.
- Afslutning af hovedunderproceduren.
- Slut på modulet.
Brugerdefinerede undtagelser i VB.Net
VB.Net giver dig mulighed for at definere dine egne undtagelser. Du kan få brugerdefinerede undtagelsesklasser fra ApplicationException-klassen. Lad os demonstrere dette med et eksempel:
Eksempel på brugerdefineret undtagelse i VB.Net
Her er et eksempel på brugerdefineret undtagelse i VB.Net:
Trin 1) Opret en ny konsolapplikation.
Trin 2) Brug følgende kode:
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
Trin 3) Klik på knappen Start fra den øverste bjælke for at udføre koden. Du bør få følgende output:
Her er et skærmbillede af koden:
Forklaring af kode:
- Oprettelse af et modul ved navn Modul1.
- Oprettelse af en undtagelsesklasse ved navn HeightIsZeroException. Klassen arver hele ApplicationException-klassen.
- Oprettelse af en underprocedure med navnet Ny. Det vil tage et strengargument med navnet tekst.
- Kalder basisklassekonstruktøren og sender ovenstående argument til den.
- Slut på den nye underprocedure.
- Slutningen af klassen HeightIsZeroException.
- Oprettelse af en klasse ved navn Højde. Dens offentlig adgangsmodifikator er Offentlig, hvilket betyder, at den vil være offentligt tilgængelig.
- Oprettelse af en heltalsvariabel ved navn Height og initialisering af dens værdi til 0.
- Oprettelse af en underprocedure ved navn showHeight().
- Kontrollerer, hvornår værdien af variablen Højde er 0. Vi har brugt betingelsen If...Then.
- At kaste HeightIsZeroException, hvis ovenstående betingelse er sand. Meddelelsen Zero Height Found vil blive vist, når denne undtagelse kastes.
- Den anden del, der skal udføres, når If-betingelsen ikke er sand.
- Besked, der skal udskrives på konsollen, der viser højden, når den ikke er 0.
- Slut på If-betingelsen.
- Slut på showHeight()-underproceduren.
- Slutningen af klassen Højde.
- Start af hovedunderproceduren.
- Oprettelse af et objekt med navnet Height som en forekomst af klassen Height.
- Start af undtagelseshåndteringsblokken.
- Aktivering af underproceduren showHeight() defineret i klassen Height. Vi har brugt et objekt af denne klasse til at få adgang til denne metode. Denne linje kan resultere i en undtagelse. Derfor har vi omgivet det med en undtagelseshåndteringskode.
- At fange HeightIsZeroException Exception som objekt ex, hvis det opstår.
- Meddelelsen, der skal udskrives på konsollen, når HeightIsZeroException er fanget.
- Slut på undtagelseshåndteringsblokken.
- Sæt konsolvinduet på pause, mens du venter på, at en bruger foretager handling for at lukke det.
- Afslutning af hovedunderproceduren.
- Slut på modulet.
Kast undtagelse i VB.Net
I undtagelseshåndtering kan du vælge at kaste et objekt. Objektet skal dog være afledt fra System. Undtagelsesklasse, direkte eller indirekte. For eksempel:
Eksempel på kasteundtagelse i VB.Net
Nedenfor er et eksempel på throw-undtagelse i VB.Net:
Trin 1) Opret en ny konsolapplikation.
Trin 2) Brug følgende kode:
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
Trin 3) Klik på knappen Start fra den øverste bjælke for at udføre koden. Du bør få følgende:
Her er et skærmbillede af koden:
Forklaring af kode:
- Oprettelse af et modul ved navn Modul1.
- Start af hovedunderproceduren.
- Start af fejlhåndteringskoden.
- Kaster et undtagelsesobjekt. Denne kode kan generere en undtagelse, derfor har vi omgivet den med en Try/Catch-blok.
- At fange en undtagelse som objekt ex, hvis linjen kaster en undtagelse.
- Udskriver undtagelsesmeddelelsen på konsollen i tilfælde af, at den opstår.
- Blokken Endelig for at køre, uanset om en undtagelse er fanget eller ej.
- Meddelelsen, der skal udskrives på konsollen, når blokken Endelig udføres.
- Slut på undtagelseshåndteringskoden.
- Sæt konsollen på pause i et stykke tid, mens du venter på, at en bruger foretager handling for at lukke den.
- Afslutning af hovedunderproceduren.
- Slut på modulet.
Resumé
- En undtagelse henviser til et problem, der opstår under programafviklingen forårsaget af en uventet omstændighed.
- Hvis du har mistanke om, at en eller anden kode vil generere en undtagelse, skal du omgive den med en Try/Catch-blok.
- Finally-blokken kommer efter Try/Catch-blokken og udføres uanset om en undtagelse er fanget eller ej.
- VB.Net giver os mulighed for at oprette tilpassede undtagelser.