Pabandykite ... pagauti ... Galiausiai „Metimai“, „VB.Net“ vartotojo apibrėžta išimtis

Turinys:

Anonim

Kas yra išimtis?

Išimtis nurodo problemą, kylančią vykdant programą. Tai sukelia netikėta aplinkybė. Geras pavyzdys yra tai, kai atliekate dalijimo operaciją, tada padalijate iš nulio (0). Bus iškelta išimtis.

Šioje „Visual Basic“ pamokoje sužinosite:

  • Kas yra išimtis?
  • Kas yra išimčių tvarkymas?
  • „Try / Catch“ sintaksė
  • Išimčių tvarkymo pavyzdys
  • Vartotojo nustatytos išimtys
  • Objektų mėtymas

Kas yra išimčių tvarkymas?

Išskyrus išimtis, galite perkelti programos valdymą iš vienos dalies į kitą. VB.NET išimtys tvarkomos naudojant šiuos 4 raktinius žodžius:

Raktažodis Detalė
Bandyti Bloko „Try“ tikslas yra nustatyti kodo bloką, kuriam bus suaktyvinta konkreti išimtis. Po jo turėtų būti sugavimo blokas (-ai).
Pagauti Išimtis gaudoma šiame bloke. Tai yra išimčių tvarkytojas, kuriame tvarkoma Išimtis.
Pagaliau Naudokite bloką „Galiausiai“, norėdami paleisti sakinių rinkinį, nesvarbu, ar įvyko išimtis, ar ne.
Mesti Po problemos atsiradimo išmetama išimtis. Tai yra raktinio žodžio „Metimas“ darbas.

„Try / Catch“ sintaksė

„Try / Catch“ sakiniuose pateikiama toliau nurodyta sintaksė:

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“ blokas turėtų apimti kodą, kuris gali sukelti išimtį. Šis kodas yra žinomas kaip apsaugotas kodas. Kai reikia sugauti įvairių rūšių išimtis, galite naudoti kelis sugavimo teiginius.

Išimčių tvarkymo pavyzdys

Naudodami „Try / Catch“ sakinius galite atskirti įprastą programos kodą nuo klaidų tvarkymo sistemos. Parodykime, kaip elgtis su išimtimi naudojant raktinius žodžius „Pabandyti“, „Sugauti“ ir „Galiausiai“.

1 žingsnis) Sukurkite naują konsolės programą.

2 žingsnis) Naudokite šį kodą:

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

3 žingsnis) Įrankių juostoje spustelėkite mygtuką Pradėti, kad įvykdytumėte kodą. Turėtumėte gauti šią išvestį:

Čia yra kodo ekrano kopija:

Kodo paaiškinimas:

  1. Modulio, pavadinto „Module1“, sukūrimas.
  2. Sudedamosios procedūros, pavadintos divizija, sukūrimas su dviem sveikojo skaičiaus argumentais n1 ir n2. ByVal yra VB.NET raktinis žodis, nurodantis, kad argumentų reikšmės bus perduotos pagal reikšmę.
  3. Sukurti sveikojo skaičiaus kintamąjį pavadinimu atsakymas.
  4. „Try / Catch“ bloko pradžia. Turime apgaubti kodą, kuris, įtariame, gali sukelti išimtį su šiuo bloku.
  5. Skirstymo operacijos tarp kintamųjų n1 ir n2 reikšmių atlikimas. Skirstymo operacijos rezultatas priskiriamas kintamajam atsakymui. Šis kodas gali sukelti išimtį, pavyzdžiui, kai skaičių padalijame iš nulio, todėl jį apjuosėme „Try / Catch“ blokais.
  6. Gauti išimtį pavadinimu „DivideByZeroException“ ir sugeneruotą išimties pranešimą priskirti buvusiajam.
  7. Atsispausdinant tekstą konsolėje, kad vartotojui būtų pranešta apie iškeltos išimties tipą / pavadinimą.
  8. Galutinis blokavimas. Tai vykdys, ar yra išimtis, ar ne.
  9. Atsispausdindami tekstą konsolėje, parodydami padalijimo operacijos rezultatą.
  10. Bloko „Try“ pabaiga, tai yra klaidų tvarkymo kodo pabaiga.
  11. Padalijimo „Funkcija“ pabaiga.
  12. Pagrindinės procedūros pradžia.
  13. Skambinimas / iškvietimas skyriaus „DivisionFunction“. Čia pateikiamos dviejų sveikojo skaičiaus argumentų vertės. Reikšmė n1 = 4 ir n2 = 0. Tai reiškia, kad padalijimo operacija bus 4 \ 0, tai yra, n1 \ n2.
  14. Pristabdomas konsolės langas, kol vartotojas imsis veiksmų jį uždaryti.
  15. Pagrindinės procedūros pabaiga.
  16. Modulio pabaiga.

Vartotojo nustatytos išimtys

VB.NET leidžia apibrėžti savo išimtis. Galite gauti vartotojo apibrėžtas išimčių klases iš „ApplicationException“ klasės. Parodykime tai pavyzdžiu:

1 žingsnis) Sukurkite naują konsolės programą.

2 žingsnis) Naudokite šį 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

3 žingsnis) Norėdami pradėti vykdyti kodą, viršutinėje juostoje spustelėkite mygtuką Pradėti. Turėtumėte gauti šią išvestį:

Čia yra kodo ekrano kopija:

Kodo paaiškinimas:

  1. Modulio, pavadinto „Module1“, sukūrimas.
  2. Sukurti išimčių klasę pavadinimu HeightIsZeroException. Klasė paveldi visą „ApplicationException“ klasę.
  3. Sukurkite papildomą procedūrą pavadinimu „Naujas“. Tam reikės vieno eilutės argumento, pavadinto tekstu.
  4. Skambinimas pagrindinės klasės konstruktoriumi ir perdavimas aukščiau nurodytam argumentui.
  5. Naujos paprogramės pabaiga.
  6. „HeightIsZeroException“ klasės pabaiga.
  7. Kurti klasę pavadinimu Aukštis. Jo viešosios prieigos modifikatorius yra „Public“, tai reiškia, kad jis bus viešai prieinamas.
  8. Sukurti sveiko skaičiaus kintamąjį pavadinimu „Aukštis“ ir inicijuoti jo vertę iki 0.
  9. Sukurkite papildomą procedūrą pavadinimu showHeight ().
  10. Tikrinama, kada kintamojo „Height“ vertė yra 0. Mes naudojome sąlygą „If… Then“.
  11. Mesti „HeightIsZeroException“, jei pirmiau nurodyta sąlyga yra teisinga. Pranešimas „Zero Height Found“ bus rodomas, kai bus išimta ši išimtis.
  12. Kita dalis bus vykdoma, jei „If“ sąlyga nėra teisinga.
  13. Pranešimas, kurį reikia atspausdinti konsolėje, nurodant aukštį, kai jis nėra 0.
  14. „If“ sąlygos pabaiga.
  15. Parodos pabaigaHeight () antrinė procedūra.
  16. Klasės pabaiga Aukštis.
  17. Pagrindinės procedūros pradžia.
  18. Objekto, pavadinto „Aukštis“, sukūrimas kaip „Aukščio“ klasės pavyzdys.
  19. Išimčių tvarkymo bloko pradžia.
  20. Iškviečiant „ShowHeight“ () papunktį, apibrėžtą „Height“ klasėje. Norėdami pasiekti šį metodą, naudojome šios klasės objektą. Ši eilutė gali sukelti išimtį. Todėl apėmėme jį su išimčių tvarkymo kodu.
  21. „HeightIsZeroException“ išimties gavimas kaip objekto ex, jei ji įvyktų.
  22. Pranešimas, kurį reikia atspausdinti konsolėje, kai bus sugautas „HeightIsZeroException“.
  23. Išimčių tvarkymo bloko pabaiga.
  24. Pristabdykite konsolės langą laukdami, kol vartotojas imsis veiksmų jį uždaryti.
  25. Pagrindinės procedūros pabaiga.
  26. Modulio pabaiga.

Objektų mėtymas

Išskyrus tvarkymą, galite pasirinkti mesti objektą. Tačiau objektas turi būti gautas iš sistemos. Tiesioginė ar netiesioginė išimčių klasė. Pavyzdžiui:

1 žingsnis) Sukurkite naują konsolės programą.

2 žingsnis) Naudokite šį 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

3 žingsnis) Norėdami pradėti vykdyti kodą, viršutinėje juostoje spustelėkite mygtuką Pradėti. Turėtumėte gauti:

Čia yra kodo ekrano kopija:

Kodo paaiškinimas:

  1. Modulio, pavadinto „Module1“, sukūrimas.
  2. Pagrindinės procedūros pradžia.
  3. Klaidų tvarkymo kodo pradžia.
  4. Išmetimo objekto mėtymas. Šis kodas gali sukurti išimtį, todėl mes jį apjuosėme „Try / Catch“ bloku.
  5. Gauti išimtį kaip objektą ex, jei eilutė išmeta išimtį.
  6. Išimties pranešimo spausdinimas konsolėje, jei jis įvyktų.
  7. Galutinis blokas, kad būtų galima paleisti, ar yra išimtis, ar ne.
  8. Pranešimas, kurį reikia atspausdinti konsolėje, kai bus vykdomas „Block“.
  9. Išimties tvarkymo kodo pabaiga.
  10. Laikinai pristabdykite konsolę, kol vartotojas imsis veiksmų ją uždaryti.
  11. Pagrindinės procedūros pabaiga.
  12. Modulio pabaiga.

Santrauka

  • Išimtis nurodo problemą, iškylančią vykdant programą, kurią sukėlė netikėta aplinkybė.
  • Jei įtariate, kad kuris nors kodas generuos išimtį, apgaubkite jį „Try / Catch“ bloku.
  • Galutinis blokas ateina po bandymo / gaudymo bloko ir vykdo, ar yra išimtis, ar ne.
  • VB.NET leidžia mums kurti pasirinktines išimtis.