Poikkeusten käsittely VB.Netissä (kokeile Catchia)

⚡ Älykäs yhteenveto

VB.Netin poikkeusten käsittely hallitsee ajonaikaisia ​​virheitä, kuten nollalla jakamista, käyttämällä Try-, Catch-, Finally- ja Throw-avainsanoja, jotta ohjelma voi reagoida ongelmiin sulavasti sen sijaan, että se kaatuisi suorituksen aikana.

  • 🔍 poikkeus: Suorituksen aikana ilmenevä ongelma, esimerkiksi luvun jakaminen nollalla.
  • 🛡️ Kokeile ja nappaa: Try käärii riskialttiiden koodin; Catch käsittelee aiheuttamansa poikkeuksen.
  • Lopuksi: Finally-lohko suoritetaan riippumatta siitä, tapahtuuko poikkeus vai ei.
  • 🚦 Heittää: Throw herättää System.Exception-luokasta johdetun poikkeusobjektin.
  • 🧩 Mukautetut poikkeukset: Peri ApplicationException määrittääksesi omat poikkeustyypit.
  • 🤖 Tekoälyn apu: GitHub Copilot ja IntelliCode luo Try Catch -lohkoja kirjoittaessasi.

Poikkeusten käsittely VB.Netissä

Mikä on poikkeus VB.Netissä?

An Poikkeus VB.Netissä viittaa ongelmaan, joka ilmenee ohjelman suorittamisen aikana. Sen aiheuttaa odottamaton tilanne. Hyvä esimerkki on, kun suoritat jakooperaation ja jaat sitten nollalla (0). Poikkeus otetaan esille.

Mitä on poikkeuskäsittely VB.Netissä?

Poikkeuksilla mukana VB.Net, voit siirtää ohjelman hallinnan osasta toiseen. VB.Netissä poikkeukset käsitellään seuraavilla neljällä avainsanalla:

avainsana Yksityiskohta
Yrittää Try-lohkon tehtävänä on tunnistaa koodilohko, jolle erityinen poikkeus aktivoidaan. Sen jälkeen pitäisi olla kiinnityslohko(t).
paini Poikkeuksen sieppaus tehdään tässä lohkossa. Se on poikkeuskäsittelijä, jossa poikkeusta käsitellään.
Vihdoin Käytä Lopuksi-lohkoa suorittaaksesi joukon lauseita riippumatta siitä, onko poikkeus tapahtunut vai ei.
Heittää Poikkeus tehdään ongelman ilmetessä. Tämä on Throw-avainsanan työ.

Kun näiden neljän avainsanan roolit ovat selvät, mieti, miten ne yhdistyvät yhden lauseen sisällä.

Try Catchin syntaksi VB.Netissä

Try Catch -lauseet VB.Netissä määritellään käyttämällä alla olevaa syntaksia:

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-lohkon tulee ympäröidä koodi, joka voi aiheuttaa poikkeuksen. Tämä koodi tunnetaan suojattuna koodina. Voit käyttää useita catch-lauseita, kun tarvitset erityyppisiä poikkeuksia.

Esimerkki poikkeusten käsittelystä VB.Netissä Try Catchin ja Lopun avulla

Try/Catch-lauseiden avulla voit erottaa tavallisen ohjelmakoodisi virheenkäsittelyjärjestelmästä. Katsotaanpa, miten poikkeus käsitellään avainsanojen Try, Catch ja Finally avulla.

Vaihe 1) Luo uusi konsolisovellus.

Vaihe 2) Käytä tätä koodia:

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

Vaihe 3) Napsauta työkalupalkin Käynnistä-painiketta suorittaaksesi koodin. Sinun pitäisi saada seuraava tulos:

VB.Net Kokeile Catch Finally -konsolin tulostusta, joka näyttää pyydetyn DivideByZeroException-poikkeuksen.

Tässä on kuvakaappaus koodista:

VB.Net Try Catch Finally -esimerkkikoodi Visual Studiossa

Selitys Code:

  1. Moduuli nimeltä Moduuli1 luominen.
  2. DivisionFunction-nimisen aliproseduurin luominen kahdella kokonaislukuargumentilla n1 ja n2. ByVal on VB.Net-avainsana, joka ilmoittaa, että argumenttien arvot välitetään arvon mukaan.
  3. Luodaan kokonaislukumuuttuja nimeltä vastaus.
  4. Try/Catch-lohkon alku. Meidän täytyy ympäröidä koodi, jonka epäilemme aiheuttavan poikkeuksen tällä lohkolla.
  5. Suoritetaan jakooperaatio muuttujien n1 ja n2 arvojen välillä. Jakooperaation tulos liitetään muuttujan vastaukseen. Tämä koodi voi aiheuttaa poikkeuksen, esimerkiksi kun jaamme luvun nollalla, joten olemme ympäröineet sen Try/Catch-lohkoilla.
  6. Otetaan kiinni DivideByZeroException-niminen poikkeus ja määritetään luotu poikkeussanoma ex.
  7. Tulostetaan tekstiä konsoliin, jotta käyttäjälle ilmoitetaan poikkeuksen tyypistä/nimestä.
  8. Lopuksi lohko. Tämä suoritetaan riippumatta siitä, onko poikkeus kiinni vai ei.
  9. Tulostetaan konsolille tekstiä, joka näyttää jakamisen tuloksen.
  10. Try-lohkon loppu, eli virheenkäsittelykoodin loppu.
  11. DivisionFunction-alimenettelyn loppu.
  12. Pääalamenettelyn aloitus.
  13. DivisionFunction-alimenettelyn kutsuminen/kutsuminen. Kahden kokonaislukuargumentin arvot välitetään tässä. Arvot n1=4 ja n2=0. Tämä tarkoittaa, että jakooperaatio on 4\0, eli n1\n2.
  14. Konsoli-ikkunan keskeyttäminen odottamassa, että käyttäjä sulkee sen.
  15. Pääalamenettelyn loppu.
  16. Moduulin loppu.

Käyttäjän määrittämät poikkeukset VB.Netissä

VB.Netissä voit määritellä omia poikkeuksia. Voit saada käyttäjän määrittämiä poikkeusluokkia ApplicationException-luokasta. Havainnollistetaan tätä esimerkillä:

Esimerkki käyttäjän määrittämästä poikkeuksesta VB.Netissä

Tässä on esimerkki käyttäjän määrittämästä poikkeuksesta VB.Netissä:

Vaihe 1) Luo uusi konsolisovellus.

Vaihe 2) Käytä seuraavaa koodia:

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

Vaihe 3) Napsauta yläpalkin Käynnistä-painiketta suorittaaksesi koodin. Sinun pitäisi saada seuraava tulos:

VB.Netin käyttäjän määrittämä HeightIsZeroException-viesti tulostuu konsoliin

Tässä on kuvakaappaus koodista:

VB.Netin käyttäjän määrittämän poikkeusluokan esimerkkikoodi Visual Studiossa

Selitys Code:

  1. Moduuli nimeltä Moduuli1 luominen.
  2. Luodaan poikkeusluokka nimeltä HeightIsZeroException. Luokka perii kaiken ApplicationException-luokan.
  3. Luodaan alimenettely nimeltä Uusi. Se vie yhden merkkijonoargumentin nimeltä teksti.
  4. Kutsutaan perusluokan konstruktori ja välitetään sille yllä oleva argumentti.
  5. Uuden alimenettelyn loppu.
  6. HeightIsZeroException-luokan loppu.
  7. Luodaan luokka nimeltä Korkeus. Sen julkisen pääsyn muokkaaja on julkinen, mikä tarkoittaa, että se on julkisesti saatavilla.
  8. Luodaan kokonaislukumuuttuja nimeltä Height ja alustetaan sen arvo 0:ksi.
  9. Luodaan alimenettely nimeltä showHeight().
  10. Tarkistetaan, milloin muuttujan Korkeus arvo on 0. Olemme käyttäneet If…Then-ehtoa.
  11. HeightIsZeroExceptionin heittäminen, jos yllä oleva ehto on totta. Viesti Nollakorkeus löydetty näytetään, kun tämä poikkeus heitetään.
  12. Else-osa, joka suoritetaan, kun If-ehto ei ole tosi.
  13. Konsoliin tulostettava viesti, joka näyttää korkeuden, kun se ei ole 0.
  14. Jos-ehdon loppu.
  15. ShowHeight()-aliprosessin loppu.
  16. Luokan loppu Korkeus.
  17. Pääalamenettelyn aloitus.
  18. Korkeus-nimisen objektin luominen Height-luokan esiintymäksi.
  19. Poikkeuksenkäsittelylohkon alku.
  20. Kutsutaan Height-luokassa määriteltyä showHeight()-aliproseduuria. Olemme käyttäneet tämän luokan objektia tämän metodin käyttämiseen. Tämä rivi voi aiheuttaa poikkeuksen. Siksi olemme ympäröineet sen poikkeusten käsittelykoodilla.
  21. HeightIsZeroException-poikkeuksen saaminen objektina ex, jos se tapahtuu.
  22. Konsoliin tulostettava viesti, kun HeightIsZeroException havaitaan.
  23. Poikkeuksenkäsittelylohkon loppu.
  24. Keskeytä konsoli-ikkuna odottamaan, että käyttäjä sulkee sen.
  25. Pääalamenettelyn loppu.
  26. Moduulin loppu.

Heitä poikkeus VB.Netissä

Poikkeusten käsittelyssä voit heittää objektin. Objektin on kuitenkin oltava johdettu System.Exception-luokasta, suoraan tai epäsuorasti. Esimerkiksi:

Esimerkki heittopoikkeuksesta VB.Netissä

Alla on esimerkki VB.Netin heittopoikkeuksesta:

Vaihe 1) Luo uusi konsolisovellus.

Vaihe 2) Käytä seuraavaa koodia:

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

Vaihe 3) Napsauta yläpalkin Käynnistä-painiketta suorittaaksesi koodin. Sinun pitäisi saada seuraavat:

VB.Net Throw -lausekkeen konsolin tuloste, joka näyttää mukautetun poikkeusviestin

Tässä on kuvakaappaus koodista:

VB.Net Throw -poikkeusesimerkkikoodi Try Catch Finally -toiminnolla

Selitys Code:

  1. Moduuli nimeltä Moduuli1 luominen.
  2. Pääalamenettelyn aloitus.
  3. Virheenkäsittelykoodin alku.
  4. Poikkeusobjektin heittäminen. Tämä koodi saattaa luoda poikkeuksen, joten olemme ympäröineet sen Try/Catch-esolla.
  5. Poikkeuksen kiinniotto objektina ex, jos viiva heittää poikkeuksen.
  6. Poikkeusviestin tulostaminen konsoliin siltä varalta, että se tapahtuu.
  7. Lopuksi -lohko, joka suoritetaan riippumatta siitä, havaitaanko poikkeus vai ei.
  8. Viesti, joka tulostetaan konsolissa, kun Lopuksi-lohko suoritetaan.
  9. Poikkeuksenkäsittelykoodin loppu.
  10. Pysäytä konsoli hetkeksi odottamaan, että käyttäjä sulkee sen.
  11. Pääalamenettelyn loppu.
  12. Moduulin loppu.

UKK

Kyllä. Try-lauseke on pätevä ilman Catch-lauseketta, kunhan se sisältää Finally-lohkon. Tämä Try Finally -lomake suorittaa siivouskoodia, mutta ei käsittele itse poikkeusta.

Kyllä. Listaa useita Catch-lohkoja käsittelemään erityyppisiä poikkeuksia. Järjestä ne tarkimmasta vähiten spesifiseen, koska VB.Net tarkistaa ne järjestyksessä ja käyttää ensimmäistä osumaa.

Lähes aina. Suoritetaan lopuksi riippumatta siitä, havaitaanko poikkeus vai ei, ja jopa Return-lauseen jälkeen. Se ohitetaan vain End-lauseen tai StackOverflowException-poikkeuksen yhteydessä.

Throw-funktio nostaa uudelleen nykyisen poikkeuksen ja säilyttää alkuperäisen pinonsa. trace. Throw ex nollaa pinon trace nykyiselle riville, piilottaen virheen todellisen alkamiskohdan. Suosi tavallista Throw-komentoa.

Kääntäjä havaitsee syntaksivirheen ennen ohjelman suorittamista. Poikkeus tapahtuu suorituksen aikana, ja se voidaan käsitellä Try Catch -lohkolla.

Yleisiä ovat DivideByZeroException, NullReferenceException, IndexOutOfRangeException, FormatException ja OverflowException. Kaikki periytyvät System.Exception-luokasta ja ne voidaan havaita erikseen.

Kyllä. GitHub Copilot muuttaa selkokielisen kommentin täysimittaiseksi Try Catch Finally -lohkoksi ja ehdottaa oikeaa poikkeustyyppiä. Tarkista aina luotu käsittelijä.

Kyllä. Visual Studio InteliCode tarjoaa kontekstitietoisia, koko rivin täydennyksiä Catch-lausekkeille ja poikkeustyypeille, opittu tuhansista avoimen lähdekoodin projekteista.

Tiivistä tämä viesti seuraavasti: