Undantagshantering i VB.Net (Try Catch)
โก Smart sammanfattning
Undantagshantering i VB.Net hanterar kรถrtidsfel, som att dividera med noll, med hjรคlp av nyckelorden Try, Catch, Finally och Throw sรฅ att ett program kan reagera pรฅ problem smidigt istรคllet fรถr att krascha under kรถrning.
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. |
Nรคr dessa fyra nyckelords roller รคr tydliga, fundera รถver hur de kombineras i ett enda pรฅstรฅende.
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 demonstrera 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 till Code:
- 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
I VB.Net kan du definiera dina egna undantag. Du kan hรคmta anvรคndardefinierade undantagsklasser frรฅn ApplicationException-klassen. Lรฅt oss demonstrera detta med ett exempel:
Exempel pรฅ anvรคndardefinierat undantag i VB.Net
Hรคr รคr ett exempel pรฅ ett 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 till Code:
- 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 delproceduren showHeight() som definierats i Height-klassen. Vi har anvรคnt ett objekt i den hรคr klassen fรถr att komma รฅt den hรคr metoden. Den hรคr raden kan resultera i ett undantag. Dรคrfรถr har vi omgivit 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
Vid undantagshantering kan du vรคlja att kasta ett objekt. Objektet mรฅste dock hรคrledas frรฅn System.Exception-klassen, direkt eller indirekt. Till exempel:
Exempel pรฅ kastundantag i VB.Net
Nedan fรถljer ett exempel pรฅ ett 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 till Code:
- 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.






