Poskusite ... Ujemite ... Končno, Vrzi, uporabniško določena izjema v VB.Net

Kazalo:

Anonim

Kaj je izjema?

Izjema se nanaša na težavo, ki se pojavi med izvajanjem programa. Vzrok je nepričakovana okoliščina. Dober primer je, ko izvajate operacijo delitve in nato delite z nič (0). Pojavila se bo izjema.

V tej vadnici Visual Basic boste izvedeli:

  • Kaj je izjema?
  • Kaj je obravnava izjem?
  • Sintaksa poskusa / ulova
  • Primer obravnave izjem
  • Uporabniško določene izjeme
  • Metanje predmetov

Kaj je obravnava izjem?

Z izjemami lahko nadzor nad programom prenesete iz enega dela v drugega. V VB.NET se izjeme obravnavajo z uporabo naslednjih 4 ključnih besed:

Ključna beseda Podrobnosti
Poskusi Delo bloka Poskusi je določiti kodni blok, za katerega bo aktivirana posebna izjema. Temu naj sledi blok (-i) za ulov.
Ujemite V tem bloku se izvede izjema. Je obravnavalec izjem, v katerem se obravnava izjema.
Končno Z blokom Končno zaženite nabor stavkov, ne glede na to, ali je prišlo do izjeme ali ne.
Vrzi Izjema se vrne po pojavu težave. To je delo ključne besede Throw.

Sintaksa poskusa / ulova

Izjave Try / Catch imajo spodnjo sintakso:

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

Blok Try / Catch mora obkrožati kodo, ki lahko povzroči izjemo. Ta koda je znana kot zaščitena koda. Če želite ujeti različne vrste izjem, lahko uporabite več stavkov catch.

Primer obravnave izjem

Z izjavami Try / Catch lahko svojo običajno programsko kodo ločite od sistema za obdelavo napak. Pokažimo, kako ravnati z izjemo s ključnimi besedami Poskusi, Ujeli in Končno.

Korak 1) Ustvarite novo konzolo.

2. korak) Uporabite to kodo:

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

Korak 3) Za zagon kode v orodni vrstici kliknite gumb Start. Dobili bi naslednji izhod:

Tu je posnetek zaslona kode:

Pojasnilo kode:

  1. Ustvarjanje modula z imenom Module1.
  2. Ustvarjanje podprocedure z imenom DivisionFunction z dvema celoštevilčnima argumentoma n1 in n2. ByVal je ključna beseda VB.NET, ki navaja, da bodo vrednosti argumentov posredovane po vrednosti.
  3. Ustvarjanje celoštevilčne spremenljivke z imenom odgovor.
  4. Začetek bloka Try / Catch. S tem blokom moramo obkrožiti kodo, za katero sumimo, da lahko povzroči izjemo.
  5. Izvedba delitve med vrednostmi spremenljivk n1 in n2. Rezultat delitve je dodeljen spremenljivki odgovor. Ta koda lahko povzroči izjemo, na primer, ko delimo število z ničlo, zato smo ga obdali z bloki Try / Catch.
  6. Zajemanje izjeme z imenom DivideByZeroException in dodeljevanje ustvarjenega sporočila o izjemi ex.
  7. Tiskanje besedila na konzoli, da uporabnika obvestite o vrsti / imenu izjeme, ki je bila sprožena.
  8. Blok Končno. S tem boste izvedli, ali je izjema ujeta ali ne.
  9. Tiskanje nekaj besedila na konzoli, ki prikazuje rezultat operacije delitve.
  10. Konec bloka Try, to je konec kode za obdelavo napak.
  11. Konec delitve Funkcijski podproces.
  12. Začetek glavnega podprocedura.
  13. Klicanje / klicanje podprocedukcije DivisionFunction. Vrednosti dveh celoštevilnih argumentov so tu posredovane. Vrednost n1 = 4 in n2 = 0. To pomeni, da bo operacija delitve 4 \ 0, to je n1 \ n2.
  14. Začasno ustavite okno konzole in počakajte, da uporabnik ukrepa, da ga zapre.
  15. Konec glavnega podprocedura.
  16. Konec modula.

Uporabniško določene izjeme

VB.NET vam omogoča, da določite svoje izjeme. Uporabniško določene razrede izjem lahko dobite iz razreda ApplicationException. Pokažimo to na primeru:

Korak 1) Ustvarite novo konzolo.

Korak 2) Uporabite naslednjo kodo:

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

Korak 3) Za zagon kode kliknite gumb Start v zgornji vrstici. Dobili bi naslednji izhod:

Tu je posnetek zaslona kode:

Pojasnilo kode:

  1. Ustvarjanje modula z imenom Module1.
  2. Ustvarjanje razreda izjem z imenom HeightIsZeroException. Razred podeduje ves razred ApplicationException.
  3. Ustvarjanje podprocedure z imenom Novo. Potreben bo en niz argumentov z imenom besedilo.
  4. Pokliče konstruktor osnovnega razreda in mu posreduje zgornji argument.
  5. Konec novega podprocedura.
  6. Konec razreda HeightIsZeroException.
  7. Ustvarjanje predavanja z imenom Višina. Njegov modifikator javnega dostopa je Public, kar pomeni, da bo javno dostopen.
  8. Ustvarjanje celoštevilčne spremenljivke z imenom Višina in inicializacija njene vrednosti na 0.
  9. Ustvarjanje podprocedure z imenom showHeight ().
  10. Preverjanje, kdaj je vrednost spremenljivke Height 0. Uporabili smo pogoj Če ... Potem.
  11. Vrzite HeightIsZeroException, če je zgornji pogoj resničen. Ko vrnete to izjemo, se prikaže sporočilo Zero Height Found.
  12. Drugi del, ki se izvede, če pogoj If ne drži.
  13. Sporočilo za tiskanje na konzoli s prikazom višine, ko ni 0.
  14. Konec pogoja If.
  15. Konec podhoda showHeight ().
  16. Konec razreda Višina.
  17. Začetek glavnega podprocedura.
  18. Ustvarjanje predmeta z imenom Height kot primerek razreda Height.
  19. Začetek bloka za obravnavo izjem.
  20. Klicanje podprocedure showHeight (), definirane v razredu Height. Za dostop do te metode smo uporabili objekt tega razreda. Ta vrstica lahko povzroči izjemo. Zato smo ga obdali s kodo za obdelavo izjem.
  21. Ujemanje izjeme HeightIsZeroException kot predmeta ex, če se pojavi.
  22. Sporočilo za tiskanje na konzoli, ko je ujet HeightIsZeroException.
  23. Konec bloka za obdelavo izjem.
  24. Zaustavite okno konzole, ki čaka, da uporabnik ukrepa, da ga zapre.
  25. Konec glavnega podprocedura.
  26. Konec modula.

Metanje predmetov

Pri ravnanju z izjemami lahko izberete metanje predmeta. Vendar mora biti objekt izpeljan iz sistema. Razred izjem, posredno ali neposredno. Na primer:

Korak 1) Ustvarite novo konzolo.

Korak 2) Uporabite naslednjo kodo:

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

Korak 3) Za zagon kode kliknite gumb Start v zgornji vrstici. Morali bi dobiti naslednje:

Tu je posnetek zaslona kode:

Pojasnilo kode:

  1. Ustvarjanje modula z imenom Module1.
  2. Začetek glavnega podprocedura.
  3. Začetek kode za obdelavo napak.
  4. Metanje predmeta izjeme. Ta koda lahko ustvari izjemo, zato smo jo obdali z blokom Try / Catch.
  5. Ujemanje izjeme kot predmeta ex, če vrstica vrže izjemo.
  6. Tiskanje sporočila o izjemi na konzolo, če se pojavi.
  7. Blok Končno za zagon, ali je izjema ujeta ali ne.
  8. Sporočilo za tiskanje na konzoli, ko se izvede blok Končno.
  9. Konec kode za obdelavo izjem.
  10. Začasno ustavite konzolo in počakajte, da uporabnik ukrepa, da jo zapre.
  11. Konec glavnega podprocedura.
  12. Konec modula.

Povzetek

  • Izjema se nanaša na težavo, ki nastane med izvajanjem programa zaradi nepričakovane okoliščine.
  • Če sumite, da bo neka koda ustvarila izjemo, jo obkrožite z blokom Try / Catch.
  • Blok Končno pride za blokom Poskusi / ulovi in ​​izvede, ali je izjema ujeta ali ne.
  • VB.NET nam omogoča ustvarjanje izjem po meri.