Proovige ... Catch ... Lõpuks Throws, kasutaja määratud erand VB.Netis

Lang L: none (table-of-contents):

Anonim

Mis on erand?

Erand viitab probleemile, mis tekib programmi käivitamisel. Selle tingib ootamatu asjaolu. Hea näide on see, kui teete jagamistoimingut ja jagate seejärel nulliga (0). Tehakse erand.

Selles Visual Basicu õpetuses saate teada:

  • Mis on erand?
  • Mis on erandkäsitlus?
  • Proovi / püüa süntaks
  • Näide erandite käsitlemiseks
  • Kasutaja määratud erandid
  • Objektide viskamine

Mis on erandkäsitlus?

Välja arvatud erandid, saate programmi juhtimise üle kanda ühest osast teise. VB.NET-is käsitletakse erandeid järgmise 4 märksõna abil:

Märksõna Detail
Proovige Proovibloki ülesandeks on tuvastada koodiplokk, mille jaoks aktiveeritakse konkreetne erand. Sellele peaks järgnema püügiplokk (id).
Saak Erandi püüdmine toimub selles plokis. See on erandite käitleja, milles käsitletakse erandit.
Lõpuks Kasutage lauset Viimane, et käivitada lausekomplekt, olenemata sellest, kas erand on toimunud või mitte.
Viska Pärast probleemi ilmnemist visatakse erand. See on märksõna Viska töö.

Proovi / püüa süntaks

Laused Try / Catch kasutavad allpool toodud süntaksit:

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

Proovi- / püüdmisplokk peaks ümbritsema koodi, mis võib tekitada erandi. See kood on tuntud kui kaitstud kood. Kui peate püüdma erinevat tüüpi erandeid, võite kasutada mitut püügilauset.

Näide erandite käsitlemiseks

Lausete Try / Catch abil saate eraldada tavalise programmikoodi tõrketöötlussüsteemist. Demonstreerime, kuidas erandit käsitleda märksõnade Proovi, Püüa ja Lõpuks abil.

1. samm. Looge uus konsoolirakendus.

2. samm. Kasutage seda koodi:

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

Samm 3) Koodi käivitamiseks klõpsake tööriistaribal nuppu Start. Peaksite saama järgmise väljundi:

Siin on ekraanipilt koodist:

Koodi selgitus:

  1. Mooduli nimega moodul1 loomine.
  2. Alamprotseduuri nimega jagamine Funktsioon kahe täisarvu argumendiga n1 ja n2. ByVal on märksõna VB.NET, mis ütleb, et argumentide väärtused edastatakse väärtuste kaupa.
  3. Loo täisarvu muutuja nimega vastus.
  4. Bloki Try / Catch algus. Peame ümbritsema koodi, mis kahtlustab selle plokiga erandit.
  5. Jaotustoimingu tegemine muutujate n1 ja n2 väärtuste vahel. Jaotustoimingu tulemus määratakse muutujale vastus. See kood võib tekitada erandi, näiteks kui jagame numbri nulliga, seega oleme selle ümbritsenud plokkidega Try / Catch.
  6. DivideByZeroException nimelise erandi püüdmine ja genereeritud erandisõnumi määramine ex-le.
  7. Konsoolile teksti printimine, et teavitada kasutajat tõstetud erandi tüübist / nimest.
  8. Viimane plokk. See täidab, kas erand on püütud või mitte.
  9. Jagamistoimingu tulemust näitava teksti printimine konsoolile.
  10. Bloki Proovi lõpp, see tähendab tõrkeotsingu koodi lõpp.
  11. JaguFunction alamprotseduuri lõpp.
  12. Põhiprotseduuri algus.
  13. Jaotise Funktsioon alamprotseduuri kutsumine / kutsumine. Siin edastatakse kahe täisarvu argumendi väärtused. Väärtus n1 = 4 ja n2 = 0. See tähendab, et jagamistoiminguks saab 4 \ 0, st n1 \ n2.
  14. Konsooliakna peatamine ootab, kuni kasutaja võtab selle sulgemiseks midagi ette.
  15. Põhiprotseduuri lõpp.
  16. Mooduli lõpp.

Kasutaja määratud erandid

VB.NET võimaldab teil oma erandeid määratleda. Kasutaja määratletud erandklasse saate klassist ApplicationException. Näitagem seda näite abil:

1. samm. Looge uus konsoolirakendus.

2. samm. Kasutage järgmist koodi:

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

Samm 3) Koodi käivitamiseks klõpsake ülemist riba nuppu Start. Peaksite saama järgmise väljundi:

Siin on ekraanipilt koodist:

Koodi selgitus:

  1. Mooduli nimega moodul1 loomine.
  2. Erandklassi loomine nimega HeightIsZeroException. Klass pärib kogu klassi ApplicationException.
  3. Alamprotseduuri loomine nimega Uus. Selleks kulub üks stringi argument nimega tekst.
  4. Alusklassi konstruktori kutsumine ja sellele ülaltoodud argumendi edastamine.
  5. Uue alammenetluse lõpp.
  6. HeightIsZeroException klassi lõpp.
  7. Klass nimega Kõrgus. Selle avaliku juurdepääsu modifitseerija on avalik, mis tähendab, et see on avalikult juurdepääsetav.
  8. Loo täisarvu muutuja nimega Kõrgus ja lähtestatakse selle väärtus 0-ni.
  9. Alamprotseduuri nimega showHeight () loomine.
  10. Kontrollime, millal muutuja Kõrgus väärtus on 0. Oleme kasutanud tingimust Kui… siis.
  11. Heitma HeightIsZeroException, kui ülaltoodud tingimus on tõene. Selle erandi viskamisel kuvatakse teade Nullkõrgus leitud.
  12. Muu osa, mis tuleb täita, kui tingimus If ei vasta tõele.
  13. Konsoolile prinditav sõnum, mis näitab kõrgust, kui see pole 0.
  14. Tingimuse If lõpp.
  15. Etenduse Kõrgus () alamprotseduur.
  16. Tunni lõpp Kõrgus.
  17. Põhiprotseduuri algus.
  18. Objekti nimega Kõrgus kui klassi Kõrgus eksemplari loomine.
  19. Erandite käitlemise ploki algus.
  20. Klassis Height määratletud alamprotseduuri showHeight () kutsumine. Sellele meetodile juurdepääsemiseks oleme kasutanud selle klassi objekti. See rida võib põhjustada erandi. Seetõttu oleme selle ümbritsenud erandi käitlemise koodiga.
  21. HeightIsZeroException Exceptioni püüdmine objektina ex juhul, kui see juhtub.
  22. Konsoolile printimise teade, kui tabatakse HeightIsZeroException.
  23. Erandite käitlemise ploki lõpp.
  24. Peatage konsooliakna ootamine, kuni kasutaja selle sulgemiseks midagi ette võtab.
  25. Põhiprotseduuri lõpp.
  26. Mooduli lõpp.

Objektide viskamine

Erandkäsitluse korral saate objekti visata. Kuid objekt peab olema tuletatud süsteemist. Otseselt või kaudselt erandklass. Näiteks:

1. samm. Looge uus konsoolirakendus.

2. samm. Kasutage järgmist koodi:

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

Samm 3) Koodi käivitamiseks klõpsake ülemist riba nuppu Start. Peaksite saama järgmist:

Siin on ekraanipilt koodist:

Koodi selgitus:

  1. Mooduli nimega moodul1 loomine.
  2. Põhiprotseduuri algus.
  3. Veakäsitluskoodi algus.
  4. Erandobjekti viskamine. See kood võib tekitada erandi, mistõttu oleme selle ümbritsenud proovimis- / püüdmisplokiga.
  5. Erandi püüdmine objektina ex, kui rida viskab erandi.
  6. Erandisõnumi printimine konsoolile, kui see juhtub.
  7. Viimane plokk, et käivitada, kas erand on püütud või mitte.
  8. Konsoolile printimise teade, kui plokk Lõplik käivitatakse.
  9. Erandi käitlemise koodi lõpp.
  10. Peatage konsool mõneks ajaks, oodates, kuni kasutaja selle sulgemiseks midagi ette võtab.
  11. Põhiprotseduuri lõpp.
  12. Mooduli lõpp.

Kokkuvõte

  • Erand viitab probleemile, mis tekib programmi käivitamisel ootamatu asjaolu tõttu.
  • Kui kahtlustate, et mõni kood genereerib erandi, ümbritsege see proovimis- / püüdmisplokiga.
  • Viimane plokk tuleb pärast proovimis- / püüdmisplokki ja täidab, kas erand on püütud või mitte.
  • VB.NET võimaldab meil luua kohandatud erandeid.