Försök ... Fånga ... Slutligen kastar, användardefinierat undantag i VB.Net

Innehållsförteckning:

Anonim

Vad är ett undantag?

Ett undantag avser ett problem som uppstår under programkörningen. Det åstadkommes av en oväntad omständighet. Ett bra exempel är när du utför en delningsoperation och sedan delar du med noll (0). Ett undantag kommer att tas upp.

I den här Visual Basic-självstudien lär du dig:

  • Vad är ett undantag?
  • Vad är undantagshantering?
  • Syntax för Try / Catch
  • Exempel för att hantera undantag
  • Användardefinierade undantag
  • Kasta föremål

Vad är undantagshantering?

Med undantag 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 försöksblocket är att identifiera kodblocket för vilket ett specifikt undantag kommer att aktiveras. Det bör följas av ett fångstblock.
Fånga Fångandet av undantaget görs i detta block. Det är en undantagshanterare där undantaget hanteras.
Till sist Använd Slutligen-blocket för att köra en uppsättning uttalanden om ett undantag har inträffat eller inte.
Kasta Ett undantag kastas efter att ett problem har uppstått. Detta är arbetet med nyckelordet Throw.

Syntax för Try / Catch

Try / Catch-uttalandena tar syntaxen nedan:

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 ska omge koden som kan leda till ett undantag. Den här koden är känd som en skyddad kod. Du kan använda flera fångstuttalanden när du behöver fånga olika typer av undantag.

Exempel för att hantera undantag

Med Try / Catch-uttalanden kan du separera din vanliga programkod från felhanteringssystemet. Låt oss visa hur vi hanterar ett undantag med hjälp av sökorden Try, Catch och slutligen.

Steg 1) Skapa ett nytt konsolprogram.

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

Module Module1Sub divisionFunction(ByVal n1 As Integer, ByVal n2 As Integer)Dim answer As IntegerTryanswer = n1 \ n2Catch ex As DivideByZeroExceptionConsole.WriteLine("Exception: {0}", ex)FinallyConsole.WriteLine("Answer is: {0}", answer)End TryEnd SubSub Main()divisionFunction(4, 0)Console.ReadKey()End SubEnd 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:

  1. Skapa en modul med namnet Module1.
  2. Skapa en delprocedur med namnet divisionFunction med två heltalargument n1 och n2. ByVal är ett VB.NET-nyckelord som anger att värdena för argumenten kommer att skickas med värde.
  3. Skapa en heltalsvariabel med namnet svar.
  4. Starta försöks- / fångstblocket. Vi måste omge koden som vi misstänker kan göra ett undantag med detta block.
  5. Utföra en uppdelningsoperation mellan värdena för variablerna n1 och n2. Resultatet av delningsoperationen tilldelas variabelsvaret. Den här koden kan leda till ett undantag, till exempel när vi delar ett tal med noll, därför har vi omringat det med Try / Catch-blocken.
  6. Fångar undantaget med namnet DivideByZeroException och tilldelar det genererade undantagsmeddelandet till exet.
  7. Skriva ut lite text på konsolen för att meddela användaren typen / namnet på undantaget som höjdes.
  8. Slutligen blocket. Detta utförs om ett undantag fångas eller inte.
  9. Utskrift av text på konsolen som visar resultatet av delningsoperationen.
  10. Slutet på försöksblocket, det vill säga slutet på felhanteringskoden.
  11. Slutet av divisionen Delprocedur för funktion.
  12. Början av huvudunderförfarandet.
  13. Ringa / åberopa delförfarandet divisionFunction. Värdena för de två heltalargumenten skickas här. Värdet n1 = 4 och n2 = 0. Detta innebär att delningsoperationen kommer att vara 4 \ 0, det vill säga n1 \ n2.
  14. Pausar konsolfönstret och väntar på att användaren ska vidta åtgärder för att stänga det.
  15. Slutet på huvudundersökningen.
  16. Modulens slut.

Användardefinierade undantag

VB.NET låter dig definiera dina egna undantag. Du kan hämta användardefinierade undantagsklasser från klassen ApplicationException. Låt oss demonstrera detta med ett exempel:

Steg 1) Skapa ett nytt konsolprogram.

Steg 2) Använd följande kod:

Module Module1Public Class HeightIsZeroException : Inherits ApplicationExceptionPublic Sub New(ByVal text As String)MyBase.New(text)End SubEnd ClassPublic Class HeightDim height As Integer = 0Sub showHeight()If (height = 0) ThenThrow (New HeightIsZeroException("Zero Height found"))ElseConsole.WriteLine("Height is: {0}", height)End IfEnd SubEnd ClassSub Main()Dim hght As Height = New Height()Tryhght.showHeight()Catch ex As HeightIsZeroExceptionConsole.WriteLine("HeightIsZeroException: {0}", ex.Message)End TryConsole.ReadKey()End SubEnd Module

Steg 3) Klicka på Start-knappen från 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:

  1. Skapa en modul med namnet Module1.
  2. Skapa en undantagsklass med namnet HeightIsZeroException. Klassen ärver alla ApplicationException-klassen.
  3. Skapa en delprocedur med namnet Ny. Det tar ett strängargument med namnet text.
  4. Anropa basklasskonstruktören och vidarebefordra ovanstående argument.
  5. Slutet av det nya delförfarandet.
  6. Slutet på klassen HeightIsZeroException.
  7. Skapa en klass som heter Höjd. Dess modifierare för allmänhet är Public, vilket betyder att den kommer att vara tillgänglig för allmänheten.
  8. Skapa en heltalsvariabel med namnet Höjd och initialisera dess värde till 0.
  9. Skapa ett underförfarande som heter showHeight ().
  10. Kontrollerar när värdet på variabeln Höjd är 0. Vi har använt villkoren If ... Then.
  11. Att kasta HeightIsZeroException om ovanstående villkor är sant. Meddelandet Noll höjd hittades visas när detta undantag kastas.
  12. Den andra delen som ska köras när If-villkoret inte är sant.
  13. Meddelande att skrivas ut på konsolen som visar höjden när den inte är 0.
  14. Slut på If-tillståndet.
  15. Slut på underproceduren för showHeight ().
  16. Slut på klassen Höjd.
  17. Början av huvudunderförfarandet.
  18. Skapa ett objekt med namnet Höjd som en förekomst av klassen Höjd.
  19. Början på undantagshanteringsblocket.
  20. Påkallar subproceduren showHeight () definierad i klassen Höjd. Vi har använt ett objekt av denna klass för att komma åt den här metoden. Denna linje kan leda till ett undantag. Därför har vi omringat den med en undantagskod för hantering.
  21. Fångar HeightIsZeroException-undantaget som objekt ex om det inträffar.
  22. Meddelandet som ska skrivas ut på konsolen när HeightIsZeroException fångas.
  23. Slutet 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. Slutet på huvudundersökningen.
  26. Modulens slut.

Kasta föremål

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:

Steg 1) Skapa ett nytt konsolprogram.

Steg 2) Använd följande kod:

Module Module1Sub Main()TryThrow New ApplicationException("Throwing a custom exception")Catch ex As ExceptionConsole.WriteLine(ex.Message)FinallyConsole.WriteLine("The Finally Block")End TryConsole.ReadKey()End SubEnd Module

Steg 3) Klicka på Start-knappen från 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:

  1. Skapa en modul med namnet Module1.
  2. Början av huvudunderförfarandet.
  3. Start av felhanteringskoden.
  4. Kasta ett undantagsobjekt. Den här koden kan generera ett undantag, därför har vi omringat den med ett Try / Catch-block.
  5. Fångar ett undantag som objekt ex om raden ger ett undantag.
  6. Skriva ut undantagsmeddelandet på konsolen om det inträffar.
  7. Slutligen blockeras för att köra om ett undantag fångas eller inte.
  8. Meddelandet som ska skrivas ut på konsolen när Slutligen-blocket körs.
  9. Slut på kod för undantagshantering.
  10. Pausa konsolen ett tag och vänta på att en användare ska vidta åtgärder för att stänga den.
  11. Slutet på huvudundersökningen.
  12. Modulens slut.

Sammanfattning

  • Ett undantag avser ett problem som uppstår under programkörning orsakat av en oväntad omständighet.
  • Om du misstänker att någon kod kommer att generera ett undantag, omge det med ett försök / fångstblock.
  • Slutligen-blocket kommer efter Try / Catch-blocket och kör om ett undantag fångas eller inte.
  • VB.NET tillåter oss att skapa anpassade undantag.