Poikkeuskäsittely VB.Netissä: Kokeile & Catch -käsittelyesimerkkejä
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ö. |
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ä. Osoitetaan, kuinka poikkeuksia käsitellään käyttämällä Try-, Catch- ja Last-avainsanoja.
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:
Koodin selitys:
- 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.Netin avulla voit määrittää omia poikkeuksiasi. Voit saada käyttäjän määrittämiä poikkeusluokkia ApplicationException-luokasta. Osoittakaamme tämä 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:
Koodin selitys:
- 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.
- Height-luokassa määritellyn showHeight()-aliproseduurin kutsuminen. Olemme käyttäneet tämän luokan objektia päästäksemme tähän menetelmään. Tämä rivi voi johtaa poikkeukseen. Siksi olemme ympäröineet sen poikkeuskä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ä
Poikkeuskäsittelyssä voit heittää esineen. Objektin on kuitenkin oltava johdettu järjestelmästä. Poikkeusluokka, suoraan tai epäsuorasti. Esimerkiksi:
Esimerkki heittopoikkeuksesta VB.Netissä
Alla on esimerkki heittopoikkeuksesta VB.Netissä:
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:
Koodin selitys:
- 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.
Yhteenveto
- Poikkeus viittaa ongelmaan, joka ilmenee ohjelman suorituksen aikana ja jonka aiheuttaa odottamaton olosuhde.
- Jos epäilet, että jokin koodi luo poikkeuksen, ympäröi se Try/Catch-lohkolla.
- Lopuksi-lohko tulee Try/Catch-lohkon jälkeen ja suorittaa sen, onko poikkeus kiinni vai ei.
- VB.Net antaa meille mahdollisuuden luoda mukautettuja poikkeuksia.