Probeer ... Catch ... Eindelijk, Throws, door de gebruiker gedefinieerde uitzondering in VB.Net

Inhoudsopgave:

Anonim

Wat is een uitzondering?

Een uitzondering verwijst naar een probleem dat zich voordoet tijdens de uitvoering van een programma. Het wordt veroorzaakt door een onverwachte omstandigheid. Een goed voorbeeld is wanneer u een deelbewerking uitvoert en vervolgens deelt door nul (0). Er wordt een uitzondering gemaakt.

In deze Visual Basic-zelfstudie leert u:

  • Wat is een uitzondering?
  • Wat is het afhandelen van uitzonderingen?
  • Syntaxis van Try / Catch
  • Voorbeeld om uitzonderingen af ​​te handelen
  • Door de gebruiker gedefinieerde uitzonderingen
  • Objecten gooien

Wat is het afhandelen van uitzonderingen?

Op uitzonderingen na kunt u de besturing van een programma van het ene onderdeel naar het andere overbrengen. In VB.NET worden uitzonderingen afgehandeld met behulp van de volgende 4 sleutelwoorden:

Trefwoord Detail
Proberen Het werk van het Try-blok is om het codeblok te identificeren waarvoor een specifieke uitzondering zal worden geactiveerd. Het moet worden gevolgd door een catch-blok (ken).
Vangst Het opvangen van de uitzondering wordt gedaan in dit blok. Het is een exception handler waarin de Exception wordt afgehandeld.
Tenslotte Gebruik het blok Eindelijk om een ​​reeks instructies uit te voeren, ongeacht of er een uitzondering is opgetreden.
Werpen Er wordt een uitzondering gegenereerd nadat er een probleem is opgetreden. Dit is het werk van het trefwoord Throw.

Syntaxis van Try / Catch

De Try / Catch-instructies gebruiken de onderstaande syntaxis:

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

Het Try / Catch-blok moet de code omringen die een uitzondering kan veroorzaken. Deze code staat bekend als een beschermde code. U kunt meerdere catch-statements gebruiken als u verschillende soorten uitzonderingen moet opvangen.

Voorbeeld om uitzonderingen af ​​te handelen

Met de Try / Catch-instructies kunt u uw gewone programmacode scheiden van het foutafhandelingssysteem. Laten we demonstreren hoe u een exception kunt afhandelen met behulp van de trefwoorden Try, Catch en Final.

Stap 1) Maak een nieuwe consoletoepassing.

Stap 2) Gebruik deze code:

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

Stap 3) Klik op de Start-knop in de werkbalk om de code uit te voeren. Je zou de volgende output moeten krijgen:

Hier is een screenshot van de code:

Verklaring van de code:

  1. Een module maken met de naam Module1.
  2. Een subprocedure maken met de naam divisionFunction met twee integer-argumenten n1 en n2. De ByVal is een VB.NET-sleutelwoord dat aangeeft dat de waarden van de argumenten worden doorgegeven als waarde.
  3. Een integervariabele maken met de naam antwoord.
  4. Start van het Try / Catch-blok. We moeten de code omringen waarvan we vermoeden dat deze een uitzondering kan vormen met dit blok.
  5. Een deeloperatie uitvoeren tussen de waarden van variabelen n1 en n2. Het resultaat van de deelbewerking wordt toegewezen aan het variabele antwoord. Deze code kan een uitzondering opleveren, bijvoorbeeld wanneer we een getal delen door nul, daarom hebben we het omgeven door de Try / Catch-blokken.
  6. De uitzondering met de naam DivideByZeroException opvangen en het gegenereerde uitzonderingsbericht toewijzen aan de ex.
  7. Het afdrukken van wat tekst op de console om de gebruiker op de hoogte te stellen van het type / de naam van de uitzondering die is opgetreden.
  8. Het laatste blok. Dit wordt uitgevoerd, ongeacht of een uitzondering wordt onderschept of niet.
  9. Wat tekst op de console afdrukken met het resultaat van de splitsingsoperatie.
  10. Einde van het Try-blok, dat wil zeggen, het einde van de foutafhandelingscode.
  11. Einde van de divisie Functie subprocedure.
  12. Start van de belangrijkste subprocedure.
  13. Aanroepen / aanroepen van de subprocedure divisieFunctie. De waarden van de twee integer-argumenten worden hier doorgegeven. De waarde van n1 = 4 en n2 = 0. Dit betekent dat de deelbewerking 4 \ 0 zal zijn, dat wil zeggen n1 \ n2.
  14. Het consolevenster pauzeren in afwachting van de actie van de gebruiker om het te sluiten.
  15. Einde van de belangrijkste subprocedure.
  16. Einde van de module.

Door de gebruiker gedefinieerde uitzonderingen

Met VB.NET kunt u uw eigen uitzonderingen definiëren. U kunt door de gebruiker gedefinieerde uitzonderingsklassen ophalen uit de klasse ApplicationException. Laten we dit demonstreren met een voorbeeld:

Stap 1) Maak een nieuwe consoletoepassing.

Stap 2) Gebruik de volgende code:

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

Stap 3) Klik op de Start-knop in de bovenste balk om de code uit te voeren. Je zou de volgende output moeten krijgen:

Hier is een screenshot van de code:

Verklaring van de code:

  1. Een module maken met de naam Module1.
  2. Een uitzonderingsklasse maken met de naam HeightIsZeroException. De klasse erft de hele ApplicationException-klasse.
  3. Een subprocedure maken met de naam Nieuw. Er is één tekenreeksargument nodig met de naam tekst.
  4. De constructor van de basisklasse aanroepen en het bovenstaande argument eraan geven.
  5. Einde van de nieuwe subprocedure.
  6. Einde van de klasse HeightIsZeroException.
  7. Een klasse maken met de naam Hoogte. De modifier voor openbare toegang is Openbaar, wat betekent dat deze openbaar toegankelijk zal zijn.
  8. Een integervariabele maken met de naam Hoogte en de waarde ervan initialiseren op 0.
  9. Een subprocedure maken met de naam showHeight ().
  10. Controleren wanneer de waarde van de variabele Hoogte 0 is. We hebben de voorwaarde If… Then gebruikt.
  11. Om de HeightIsZeroException te gooien als de bovenstaande voorwaarde waar is. Het bericht Zero Height Found wordt weergegeven wanneer deze uitzondering wordt gegenereerd.
  12. Het Else-gedeelte dat moet worden uitgevoerd als de If-voorwaarde niet waar is.
  13. Bericht dat op de console moet worden afgedrukt met de hoogte wanneer deze niet 0 is.
  14. Einde van de If-voorwaarde.
  15. Einde van de subprocedure showHeight ().
  16. Einde van de les Hoogte.
  17. Start van de belangrijkste subprocedure.
  18. Een object met de naam Hoogte maken als een instantie van de klasse Hoogte.
  19. Start van het blok voor het afhandelen van uitzonderingen.
  20. Het aanroepen van de subprocedure showHeight () die is gedefinieerd in de klasse Height. We hebben een object van deze klasse gebruikt om toegang te krijgen tot deze methode. Deze regel kan resulteren in een uitzondering. Daarom hebben we het omgeven met een code voor het afhandelen van uitzonderingen.
  21. De uitzondering HoogteIsZeroException opvangen als object ex in het geval dat deze zich voordoet.
  22. Het bericht dat op de console moet worden afgedrukt wanneer de HeightIsZeroException wordt opgevangen.
  23. Einde van het blok voor het afhandelen van uitzonderingen.
  24. Pauzeer het consolevenster totdat een gebruiker actie onderneemt om het te sluiten.
  25. Einde van de belangrijkste subprocedure.
  26. Einde van de module.

Objecten gooien

Bij het afhandelen van uitzonderingen kunt u ervoor kiezen om een ​​object te gooien. Het object moet echter zijn afgeleid van System. Uitzonderingsklasse, direct of indirect. Bijvoorbeeld:

Stap 1) Maak een nieuwe consoletoepassing.

Stap 2) Gebruik de volgende code:

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

Stap 3) Klik op de Start-knop in de bovenste balk om de code uit te voeren. Je zou het volgende moeten krijgen:

Hier is een screenshot van de code:

Verklaring van de code:

  1. Een module maken met de naam Module1.
  2. Start van de belangrijkste subprocedure.
  3. Begin van de foutafhandelingscode.
  4. Een uitzonderingsobject gooien. Deze code kan een uitzondering genereren, daarom hebben we deze omgeven met een Try / Catch-blok.
  5. Een uitzondering opvangen als object ex als de regel een uitzondering genereert.
  6. Het uitzonderingsbericht op de console afdrukken voor het geval dit zich voordoet.
  7. Het blok Eindelijk om uit te voeren, ongeacht of een uitzondering wordt onderschept of niet.
  8. Het bericht dat op de console moet worden afgedrukt wanneer het blok Eindelijk wordt uitgevoerd.
  9. Einde van de code voor het afhandelen van uitzonderingen.
  10. Pauzeer de console even en wacht tot een gebruiker actie onderneemt om deze te sluiten.
  11. Einde van de belangrijkste subprocedure.
  12. Einde van de module.

Overzicht

  • Een uitzondering verwijst naar een probleem dat zich voordoet tijdens de uitvoering van een programma dat wordt veroorzaakt door een onverwachte omstandigheid.
  • Als u vermoedt dat bepaalde code een uitzondering genereert, plaatst u er een Try / Catch-blok omheen.
  • Het blok Eindelijk komt na het blok Try / Catch en wordt uitgevoerd, ongeacht of een uitzondering wordt afgevangen of niet.
  • Met VB.NET kunnen we aangepaste uitzonderingen maken.