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.

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:
Tässä on kuvakaappaus koodista:
Selitys Code:
- Moduuli nimeltä Moduuli1 luominen.
- DivisionFunction-nimisen aliproseduurin luominen kahdella kokonaislukuargumentilla n1 ja n2. ByVal on VB.Net-avainsana, joka ilmoittaa, että argumenttien arvot välitetään arvon mukaan.
- Luodaan kokonaislukumuuttuja nimeltä vastaus.
- Try/Catch-lohkon alku. Meidän täytyy ympäröidä koodi, jonka epäilemme aiheuttavan poikkeuksen tällä lohkolla.
- 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.
- Otetaan kiinni DivideByZeroException-niminen poikkeus ja määritetään luotu poikkeussanoma ex.
- Tulostetaan tekstiä konsoliin, jotta käyttäjälle ilmoitetaan poikkeuksen tyypistä/nimestä.
- Lopuksi lohko. Tämä suoritetaan riippumatta siitä, onko poikkeus kiinni vai ei.
- Tulostetaan konsolille tekstiä, joka näyttää jakamisen tuloksen.
- Try-lohkon loppu, eli virheenkäsittelykoodin loppu.
- DivisionFunction-alimenettelyn loppu.
- Pääalamenettelyn aloitus.
- 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.
- Konsoli-ikkunan keskeyttäminen odottamassa, että käyttäjä sulkee sen.
- Pääalamenettelyn loppu.
- 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:
Tässä on kuvakaappaus koodista:
Selitys Code:
- Moduuli nimeltä Moduuli1 luominen.
- Luodaan poikkeusluokka nimeltä HeightIsZeroException. Luokka perii kaiken ApplicationException-luokan.
- Luodaan alimenettely nimeltä Uusi. Se vie yhden merkkijonoargumentin nimeltä teksti.
- Kutsutaan perusluokan konstruktori ja välitetään sille yllä oleva argumentti.
- Uuden alimenettelyn loppu.
- HeightIsZeroException-luokan loppu.
- Luodaan luokka nimeltä Korkeus. Sen julkisen pääsyn muokkaaja on julkinen, mikä tarkoittaa, että se on julkisesti saatavilla.
- Luodaan kokonaislukumuuttuja nimeltä Height ja alustetaan sen arvo 0:ksi.
- Luodaan alimenettely nimeltä showHeight().
- Tarkistetaan, milloin muuttujan Korkeus arvo on 0. Olemme käyttäneet If…Then-ehtoa.
- HeightIsZeroExceptionin heittäminen, jos yllä oleva ehto on totta. Viesti Nollakorkeus löydetty näytetään, kun tämä poikkeus heitetään.
- Else-osa, joka suoritetaan, kun If-ehto ei ole tosi.
- Konsoliin tulostettava viesti, joka näyttää korkeuden, kun se ei ole 0.
- Jos-ehdon loppu.
- ShowHeight()-aliprosessin loppu.
- Luokan loppu Korkeus.
- Pääalamenettelyn aloitus.
- Korkeus-nimisen objektin luominen Height-luokan esiintymäksi.
- Poikkeuksenkäsittelylohkon alku.
- 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.
- HeightIsZeroException-poikkeuksen saaminen objektina ex, jos se tapahtuu.
- Konsoliin tulostettava viesti, kun HeightIsZeroException havaitaan.
- Poikkeuksenkäsittelylohkon loppu.
- Keskeytä konsoli-ikkuna odottamaan, että käyttäjä sulkee sen.
- Pääalamenettelyn loppu.
- 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:
Tässä on kuvakaappaus koodista:
Selitys Code:
- Moduuli nimeltä Moduuli1 luominen.
- Pääalamenettelyn aloitus.
- Virheenkäsittelykoodin alku.
- Poikkeusobjektin heittäminen. Tämä koodi saattaa luoda poikkeuksen, joten olemme ympäröineet sen Try/Catch-esolla.
- Poikkeuksen kiinniotto objektina ex, jos viiva heittää poikkeuksen.
- Poikkeusviestin tulostaminen konsoliin siltä varalta, että se tapahtuu.
- Lopuksi -lohko, joka suoritetaan riippumatta siitä, havaitaanko poikkeus vai ei.
- Viesti, joka tulostetaan konsolissa, kun Lopuksi-lohko suoritetaan.
- Poikkeuksenkäsittelykoodin loppu.
- Pysäytä konsoli hetkeksi odottamaan, että käyttäjä sulkee sen.
- Pääalamenettelyn loppu.
- Moduulin loppu.






