Erandide käsitlemine VB.Netis: proovige ja saage käsitsemise näited
Mis on VB.Neti erand?
An Erand VB.Netis viitab probleemile, mis tekib programmi täitmise ajal. Selle põhjustab ootamatu asjaolu. Hea näide on see, kui teete jagamisoperatsiooni ja jagate seejärel nulliga (0). Esitatakse erand.
Mis on VB.Neti erandite käsitlemine?
Koos eranditega VB.Net, saate programmi juhtimise ühelt osalt teisele üle kanda. VB.Netis käsitletakse erandeid nelja järgmise märksõna abil:
Võtmesõna | detail |
---|---|
Püüdma | Prooviploki ülesanne on tuvastada koodiplokk, mille jaoks konkreetne erand aktiveeritakse. Sellele peaks järgnema püüdmisplokk(id). |
maadlus | Selles plokis tehakse erandi püüdmine. See on erandikäsitleja, milles käsitletakse erandit. |
Lõpuks | Kasutage plokki Lõpuks, et käivitada lausete komplekt, olenemata sellest, kas erand on toimunud või mitte. |
Viskama | Erand tehakse pärast probleemi ilmnemist. See on märksõna Viska töö. |
Proovi püüdmise süntaks VB.Netis
VB.Neti proovi püüdmise avaldused on määratletud järgmise süntaksi abil:
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üüa plokk peaks ümbritsema koodi, mis võib tekitada erandi. Seda koodi tuntakse kaitstud koodina. Kui teil on vaja tabada erinevat tüüpi erandeid, saate kasutada mitut püüdmislauset.
Erandi käsitlemise näide VB.Netis rakendusega Try Catch ja Lõpuks
Try/Catch lausetega saate oma tavalise programmikoodi veakäsitlussüsteemist eraldada. Näidakem, kuidas käsitleda erandit, kasutades märksõnu Proovi, püüa ja lõpuks.
Step 1) Looge uus konsoolirakendus.
Step 2) Kasutage seda koodi:
Module Module1 Sub divisionFunction(ByVal n1 As Integer, ByVal n2 As Integer) Dim answer As Integer Try answer = n1 \ n2 Catch ex As DivideByZeroException Console.WriteLine("Exception: {0}", ex) Finally Console.WriteLine("Answer is: {0}", answer) End Try End Sub Sub Main() divisionFunction(4, 0) Console.ReadKey() End Sub End Module
Step 3) Koodi käivitamiseks klõpsake tööriistaribal nuppu Start. Peaksite saama järgmise väljundi:
Siin on koodi ekraanipilt:
Koodi selgitus:
- Mooduli Module1 loomine.
- Alamprotseduuri nimega divisionFunction loomine kahe täisarvu argumendiga n1 ja n2. ByVal on VB.Neti märksõna, mis ütleb, et argumentide väärtused edastatakse väärtuste kaupa.
- Vastuse nimelise täisarvulise muutuja loomine.
- Proovi/Püüa ploki algus. Peame ümbritsema koodi, mis meie arvates võib selle plokiga erandi tekitada.
- Muutujate n1 ja n2 väärtuste vahel jagamistehte sooritamine. Jagamistehte tulemus omistatakse muutuja vastusele. See kood võib tekitada erandi, näiteks kui jagame arvu nulliga, seega oleme selle ümbritsenud proovi/püüa plokkidega.
- Erandi nimega DivideByZeroException püüdmine ja genereeritud erandisõnumi määramine eks.
- Teatava teksti printimine konsoolile, et teavitada kasutajat tõstatatud erandi tüübist/nimest.
- Lõpuks plokk. See toimib olenemata sellest, kas erand tabatakse või mitte.
- Konsoolile mõne teksti trükkimine, mis näitab jagamise operatsiooni tulemust.
- Proovi ploki lõpp, st veatöötluskoodi lõpp.
- Jaotuse lõpp Funktsiooni alamprotseduur.
- Põhilise alamprotseduuri algus.
- DivisionFunctioni alamprotseduuri kutsumine/väljakutsumine. Siin edastatakse kahe täisarvu argumendi väärtused. Väärtus n1=4 ja n2=0. See tähendab, et jagamistehte on 4\0, st n1\n2.
- Konsooliakna peatamine, oodates, kuni kasutaja selle sulgemiseks midagi ette võtab.
- Peamise alamprotseduuri lõpp.
- Mooduli lõpp.
Kasutaja määratud erandid VB.Netis
VB.Net võimaldab teil määrata oma erandid. Kasutaja määratud erandiklasse saate hankida ApplicationException klassist. Näitame seda näitega:
VB.Neti kasutaja määratud erandi näide
Siin on näide kasutaja määratud erandist VB.Netis:
Step 1) Looge uus konsoolirakendus.
Step 2) Kasutage järgmist koodi:
Module Module1 Public Class HeightIsZeroException : Inherits ApplicationException Public Sub New(ByVal text As String) MyBase.New(text) End Sub End Class Public Class Height Dim height As Integer = 0 Sub showHeight() If (height = 0) Then Throw (New HeightIsZeroException("Zero Height found")) Else Console.WriteLine("Height is: {0}", height) End If End Sub End Class Sub Main() Dim hght As Height = New Height() Try hght.showHeight() Catch ex As HeightIsZeroException Console.WriteLine("HeightIsZeroException: {0}", ex.Message) End Try Console.ReadKey() End Sub End Module
Step 3) Koodi käivitamiseks klõpsake ülemisel ribal nuppu Start. Peaksite saama järgmise väljundi:
Siin on koodi ekraanipilt:
Koodi selgitus:
- Mooduli Module1 loomine.
- Erandiklassi loomine nimega HeightIsZeroException. Klass pärib kogu ApplicationException klassi.
- Alamprotseduuri loomine nimega Uus. See võtab ühe stringargumendi nimega tekst.
- Põhiklassi konstruktori kutsumine ja sellele ülaltoodud argumendi edastamine.
- Uue alamprotseduuri lõpp.
- HeightIsZeroException klassi lõpp.
- Klassi loomine nimega Kõrgus. Selle avaliku juurdepääsu muutja on Avalik, mis tähendab, et see on avalikult juurdepääsetav.
- Täisarvulise muutuja nimega Height loomine ja selle väärtuse lähtestamine 0-ks.
- Alamprotseduuri nimega showHeight() loomine.
- Kontrollitakse, millal muutuja Height väärtus on 0. Oleme kasutanud tingimust If…Then.
- HeightIsZeroExceptioni väljajätmiseks, kui ülaltoodud tingimus on tõsi. Selle erandi korral kuvatakse teade Nullkõrgus leitud.
- Else osa, mis tuleb täita, kui tingimus If ei ole tõene.
- Konsoolile prinditav teade, mis näitab kõrgust, kui see ei ole 0.
- Kui tingimuse lõpp.
- ShowHeight() alamprotseduuri lõpp.
- Klassi lõpp Kõrgus.
- Põhilise alamprotseduuri algus.
- Objekti nimega Kõrgus loomine Height klassi eksemplarina.
- Erandi käsitlemise ploki algus.
- Klassis Height määratletud alamprotseduuri showHeight() kutsumine. Oleme sellele meetodile juurdepääsuks kasutanud selle klassi objekti. See rida võib põhjustada erandi. Seetõttu oleme selle ümbritsenud erandite käsitlemise koodiga.
- Erandi HeightIsZeroException püüdmine objektina ex juhul, kui see juhtub.
- Teade, mis tuleb HeightIsZeroExceptioni kinnipidamisel konsoolile printida.
- Erandi käsitlemise ploki lõpp.
- Peatage konsooliaken, oodates, kuni kasutaja selle sulgemiseks midagi teeb.
- Peamise alamprotseduuri lõpp.
- Mooduli lõpp.
Viska erand VB.Neti
Erandite käsitlemisel saate valida objekti viskamise. Objekt peab aga tulenema süsteemist. Erandklass, otseselt või kaudselt. Näiteks:
VB.Neti viskamise erandi näide
Allpool on näide viskeerandist VB.Netis:
Step 1) Looge uus konsoolirakendus.
Step 2) Kasutage järgmist koodi:
Module Module1 Sub Main() Try Throw New ApplicationException("Throwing a custom exception") Catch ex As Exception Console.WriteLine(ex.Message) Finally Console.WriteLine("The Finally Block") End Try Console.ReadKey() End Sub End Module
Step 3) Koodi käivitamiseks klõpsake ülemisel ribal nuppu Start. Peaksite saama järgmise:
Siin on koodi ekraanipilt:
Koodi selgitus:
- Mooduli Module1 loomine.
- Põhilise alamprotseduuri algus.
- Veatöötluskoodi algus.
- Erandobjekti viskamine. See kood võib tekitada erandi, mistõttu oleme selle ümbritsenud proovi/püüdmise blokiga.
- Erandi püüdmine objektina ex, kui joon viskab erandi.
- Eranditeate printimine konsoolile juhuks, kui see juhtub.
- Lõplik plokk käivitamiseks olenemata sellest, kas erand tabatakse või mitte.
- Teade, mis tuleb konsoolile printida, kui plokk Lõpuks käivitatakse.
- Erandite käsitlemise koodi lõpp.
- Peatage konsool mõneks ajaks, oodates, kuni kasutaja selle sulgemiseks midagi teeb.
- Peamise alamprotseduuri lõpp.
- Mooduli lõpp.
kokkuvõte
- Erand viitab probleemile, mis tekib programmi täitmisel ja mille on põhjustanud ootamatu asjaolu.
- Kui kahtlustate, et mõni kood tekitab erandi, ümbritsege see Try/Catch plokiga.
- Plokk Lõpuks tuleb pärast plokki Try/Catch ja see käivitatakse olenemata sellest, kas erand tabatakse või mitte.
- VB.Net võimaldab meil luua kohandatud erandeid.