Unntakshåndtering i VB.Net (Try Catch)
⚡ Smart oppsummering
Unntakshåndtering i VB.Net håndterer kjøretidsfeil, for eksempel dividering med null, ved hjelp av nøkkelordene Try, Catch, Finally og Throw, slik at et program kan reagere på problemer grasiøst i stedet for å krasje under kjøring.

Hva er et unntak i VB.Net?
An Unntak i VB.Net refererer til et problem som oppstår under programkjøring. Det er forårsaket av en uventet omstendighet. Et godt eksempel er når du utfører en divisjonsoperasjon, og deretter deler du med null (0). Et unntak vil bli reist.
Hva er unntakshåndtering i VB.Net?
Med unntak i VB.Net, kan du overføre kontrollen av et program fra en del til en annen. I VB.Net håndteres unntak med følgende 4 nøkkelord:
| søkeord | Detalj |
|---|---|
| Prøve | Arbeidet med Try-blokken er å identifisere kodeblokken som et spesifikt unntak vil bli aktivert for. Den skal følges av en fangstblokk(er). |
| Catch | Oppfanging av unntaket gjøres i denne blokken. Det er en unntaksbehandler der unntaket håndteres. |
| Endelig | Bruk Finally-blokken til å kjøre et sett med setninger om et unntak har skjedd eller ikke. |
| Kast | Et unntak blir kastet etter at et problem har oppstått. Dette er arbeidet med søkeordet Throw. |
Når rollene til disse fire nøkkelordene er klare, bør du vurdere hvordan de kombineres i én enkelt setning.
Syntaks for Try Catch i VB.Net
Try Catch-setningene i VB.Net er definert ved å bruke syntaksen nedenfor:
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 omslutte koden som kan føre til et unntak. Denne koden er kjent som en beskyttet kode. Du kan bruke flere catch-setninger når du trenger å fange opp ulike typer unntak.
Eksempel på unntakshåndtering i VB.Net med Try Catch og Finally
Med Try/Catch-setningene kan du skille den vanlige programkoden fra feilhåndteringssystemet. La oss demonstrere hvordan du håndterer et unntak ved hjelp av nøkkelordene Try, Catch og Finally.
Trinn 1) Opprett en ny konsollapplikasjon.
Trinn 2) Bruk denne 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
Trinn 3) Klikk på Start-knappen fra verktøylinjen for å utføre koden. Du bør få følgende utgang:
Her er et skjermbilde av koden:
Forklaring til Code:
- Opprette en modul kalt Module1.
- Opprette en underprosedyre kalt divisionFunction med to heltallsargumenter n1 og n2. ByVal er et VB.Net nøkkelord som sier at verdiene til argumentene vil bli sendt av verdi.
- Opprette en heltallsvariabel kalt svar.
- Start av Try/Catch-blokken. Vi må omgi koden som vi mistenker kan gi et unntak med denne blokken.
- Utføre en divisjonsoperasjon mellom verdiene til variablene n1 og n2. Resultatet av divisjonsoperasjonen tilordnes variabelsvaret. Denne koden kan føre til et unntak, for eksempel når vi deler et tall med null, og derfor har vi omgitt det med Try/Catch-blokkene.
- Å fange unntaket kalt DivideByZeroException og tilordne den genererte unntaksmeldingen til eksen.
- Skriver ut litt tekst på konsollen for å varsle brukeren om typen/navnet på unntaket som ble reist.
- Endelig blokken. Dette vil utføres enten et unntak fanges opp eller ikke.
- Skriver ut litt tekst på konsollen som viser resultatet av delingsoperasjonen.
- Slutt på Try-blokken, det vil si slutten av feilhåndteringskoden.
- Slutt på delprosedyren Funksjon.
- Start av hoveddelprosedyren.
- Kalle/påkalle underprosedyren divisjonFunksjon. Verdiene til de to heltallsargumentene sendes her. Verdien av n1=4 og n2=0. Dette betyr at divisjonsoperasjonen vil være 4\0, det vil si n1\n2.
- Setter konsollvinduet på pause og venter på at brukeren skal gjøre noe for å lukke det.
- Slutt på hoveddelprosedyren.
- Slutt på modulen.
Brukerdefinerte unntak i VB.Net
VB.Net lar deg definere dine egne unntak. Du kan hente brukerdefinerte unntaksklasser fra ApplicationException-klassen. La oss demonstrere dette med et eksempel:
Eksempel på brukerdefinert unntak i VB.Net
Her er et eksempel på et brukerdefinert unntak i VB.Net:
Trinn 1) Opprett en ny konsollapplikasjon.
Trinn 2) Bruk 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
Trinn 3) Klikk på Start-knappen fra den øverste linjen for å utføre koden. Du bør få følgende utgang:
Her er et skjermbilde av koden:
Forklaring til Code:
- Opprette en modul kalt Module1.
- Opprette en unntaksklasse kalt HeightIsZeroException. Klassen arver hele ApplicationException-klassen.
- Opprette en underprosedyre kalt Ny. Det vil ta ett strengargument kalt tekst.
- Kaller opp basisklassekonstruktøren og sender argumentet ovenfor til den.
- Slutt på den nye underprosedyren.
- Slutten av HeightIsZeroException-klassen.
- Opprette en klasse som heter Høyde. Modifikatoren for offentlig tilgang er offentlig, noe som betyr at den vil være offentlig tilgjengelig.
- Opprette en heltallsvariabel kalt Høyde og initialisere verdien til 0.
- Opprette en underprosedyre kalt showHeight().
- Sjekker når verdien av variabelen Height er 0. Vi har brukt If…Then-betingelsen.
- For å kaste HeightIsZeroException hvis betingelsen ovenfor er sann. Meldingen Null høyde funnet vil vises når dette unntaket blir kastet.
- Den andre delen som skal utføres når If-betingelsen ikke er sann.
- Melding som skal skrives ut på konsollen som viser høyden når den ikke er 0.
- Slutt på If-tilstanden.
- Slutt på underprosedyren showHeight().
- Slutt på klassen Høyde.
- Start av hoveddelprosedyren.
- Opprette et objekt kalt Height som en forekomst av Height-klassen.
- Start av unntakshåndteringsblokken.
- Kaller underprosedyren showHeight() som er definert i Height-klassen. Vi har brukt et objekt i denne klassen for å få tilgang til denne metoden. Denne linjen kan resultere i et unntak. Derfor har vi omgitt den med en unntakshåndteringskode.
- Å fange HeightIsZeroException Exception som objekt ex i tilfelle det oppstår.
- Meldingen som skal skrives ut på konsollen når HeightIsZeroException fanges opp.
- Slutt på unntakshåndteringsblokken.
- Sett konsollvinduet på pause mens du venter på at en bruker skal gjøre noe for å lukke det.
- Slutt på hoveddelprosedyren.
- Slutt på modulen.
Kast unntak i VB.Net
I unntakshåndtering kan du velge å kaste et objekt. Objektet må imidlertid være avledet fra System.Exception-klassen, direkte eller indirekte. For eksempel:
Eksempel på kasteunntak i VB.Net
Nedenfor er et eksempel på et throw-unntak i VB.Net:
Trinn 1) Opprett en ny konsollapplikasjon.
Trinn 2) Bruk 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
Trinn 3) Klikk på Start-knappen fra den øverste linjen for å utføre koden. Du bør få følgende:
Her er et skjermbilde av koden:
Forklaring til Code:
- Opprette en modul kalt Module1.
- Start av hoveddelprosedyren.
- Start av feilhåndteringskoden.
- Kaster et unntaksobjekt. Denne koden kan generere et unntak, derfor har vi omgitt den med en Try/Catch-blokk.
- Å fange et unntak som objekt eks hvis linjen kaster et unntak.
- Skriver ut unntaksmeldingen på konsollen i tilfelle det oppstår.
- Til slutt-blokken for å kjøre uansett om et unntak fanges opp eller ikke.
- Meldingen som skal skrives ut på konsollen når Endelig-blokken er utført.
- Slutt på unntakshåndteringskoden.
- Sett konsollen på pause en stund mens du venter på at en bruker skal gjøre noe for å lukke den.
- Slutt på hoveddelprosedyren.
- Slutt på modulen.






