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:

Välja arvatud käitlemine

Siin on koodi ekraanipilt:

Välja arvatud käitlemine

Koodi selgitus:

  1. Mooduli Module1 loomine.
  2. 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.
  3. Vastuse nimelise täisarvulise muutuja loomine.
  4. Proovi/Püüa ploki algus. Peame ümbritsema koodi, mis meie arvates võib selle plokiga erandi tekitada.
  5. 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.
  6. Erandi nimega DivideByZeroException püüdmine ja genereeritud erandisõnumi määramine eks.
  7. Teatava teksti printimine konsoolile, et teavitada kasutajat tõstatatud erandi tüübist/nimest.
  8. Lõpuks plokk. See toimib olenemata sellest, kas erand tabatakse või mitte.
  9. Konsoolile mõne teksti trükkimine, mis näitab jagamise operatsiooni tulemust.
  10. Proovi ploki lõpp, st veatöötluskoodi lõpp.
  11. Jaotuse lõpp Funktsiooni alamprotseduur.
  12. Põhilise alamprotseduuri algus.
  13. 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.
  14. Konsooliakna peatamine, oodates, kuni kasutaja selle sulgemiseks midagi ette võtab.
  15. Peamise alamprotseduuri lõpp.
  16. 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:

Kasutaja määratud erand

Siin on koodi ekraanipilt:

Kasutaja määratud erand

Koodi selgitus:

  1. Mooduli Module1 loomine.
  2. Erandiklassi loomine nimega HeightIsZeroException. Klass pärib kogu ApplicationException klassi.
  3. Alamprotseduuri loomine nimega Uus. See võtab ühe stringargumendi nimega tekst.
  4. Põhiklassi konstruktori kutsumine ja sellele ülaltoodud argumendi edastamine.
  5. Uue alamprotseduuri lõpp.
  6. HeightIsZeroException klassi lõpp.
  7. Klassi loomine nimega Kõrgus. Selle avaliku juurdepääsu muutja on Avalik, mis tähendab, et see on avalikult juurdepääsetav.
  8. Täisarvulise muutuja nimega Height loomine ja selle väärtuse lähtestamine 0-ks.
  9. Alamprotseduuri nimega showHeight() loomine.
  10. Kontrollitakse, millal muutuja Height väärtus on 0. Oleme kasutanud tingimust If…Then.
  11. HeightIsZeroExceptioni väljajätmiseks, kui ülaltoodud tingimus on tõsi. Selle erandi korral kuvatakse teade Nullkõrgus leitud.
  12. Else osa, mis tuleb täita, kui tingimus If ei ole tõene.
  13. Konsoolile prinditav teade, mis näitab kõrgust, kui see ei ole 0.
  14. Kui tingimuse lõpp.
  15. ShowHeight() alamprotseduuri lõpp.
  16. Klassi lõpp Kõrgus.
  17. Põhilise alamprotseduuri algus.
  18. Objekti nimega Kõrgus loomine Height klassi eksemplarina.
  19. Erandi käsitlemise ploki algus.
  20. 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.
  21. Erandi HeightIsZeroException püüdmine objektina ex juhul, kui see juhtub.
  22. Teade, mis tuleb HeightIsZeroExceptioni kinnipidamisel konsoolile printida.
  23. Erandi käsitlemise ploki lõpp.
  24. Peatage konsooliaken, oodates, kuni kasutaja selle sulgemiseks midagi teeb.
  25. Peamise alamprotseduuri lõpp.
  26. 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:

Viska Erand

Siin on koodi ekraanipilt:

Viska Erand

Koodi selgitus:

  1. Mooduli Module1 loomine.
  2. Põhilise alamprotseduuri algus.
  3. Veatöötluskoodi algus.
  4. Erandobjekti viskamine. See kood võib tekitada erandi, mistõttu oleme selle ümbritsenud proovi/püüdmise blokiga.
  5. Erandi püüdmine objektina ex, kui joon viskab erandi.
  6. Eranditeate printimine konsoolile juhuks, kui see juhtub.
  7. Lõplik plokk käivitamiseks olenemata sellest, kas erand tabatakse või mitte.
  8. Teade, mis tuleb konsoolile printida, kui plokk Lõpuks käivitatakse.
  9. Erandite käsitlemise koodi lõpp.
  10. Peatage konsool mõneks ajaks, oodates, kuni kasutaja selle sulgemiseks midagi teeb.
  11. Peamise alamprotseduuri lõpp.
  12. 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.