Kas ir izņēmums?
Izņēmums attiecas uz problēmu, kas rodas programmas izpildes laikā. To rada negaidīts apstāklis. Labs piemērs ir gadījums, kad veicat dalīšanas darbību un pēc tam dalāt ar nulli (0). Tiks izvirzīts izņēmums.
Šajā Visual Basic apmācībā jūs uzzināsiet:
- Kas ir izņēmums?
- Kas ir izņēmumu apstrāde?
- Mēģināt / noķert sintakse
- Piemērs izņēmumu apstrādei
- Lietotāja noteikti izņēmumi
- Objektu mešana
Kas ir izņēmumu apstrāde?
Izņemot izņēmumus, jūs varat pārsūtīt programmas vadību no vienas daļas uz otru. VB.NET izņēmumi tiek apstrādāti, izmantojot šādus 4 atslēgvārdus:
Atslēgvārds | Sīkāka informācija |
Izmēģiniet | Bloka Try mēģinājums ir identificēt koda bloku, kuram tiks aktivizēts noteikts izņēmums. Tam vajadzētu sekot ķeršanas bloku (-us). |
Noķert | Izņēmuma uztveršana tiek veikta šajā blokā. Tas ir izņēmumu apstrādātājs, kurā tiek izmantots izņēmums. |
Visbeidzot | Izmantojiet bloku Visbeidzot, lai palaistu pārskatu kopu neatkarīgi no tā, vai ir noticis izņēmums. |
Mest | Pēc problēmas rašanās tiek izmests izņēmums. Tas ir atslēgvārda Mest darbs. |
Mēģināt / noķert sintakse
Izmēģinājumu / ķeršanas priekšraksti izmanto zemāk norādīto sintaksi:
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
Blokam Try / Catch jāpievieno kods, kas var radīt izņēmumu. Šis kods ir pazīstams kā aizsargāts kods. Varat izmantot vairākus paziņojumus par nozveju, kad jānoķer dažāda veida izņēmumi.
Piemērs izņēmumu apstrādei
Izmantojot Try / Catch paziņojumus, jūs varat atdalīt parasto programmas kodu no kļūdu apstrādes sistēmas. Parādīsim, kā rīkoties ar izņēmumu, izmantojot mēģinājumus, ķeršanu un beidzot atslēgvārdus.
1. darbība. Izveidojiet jaunu konsoles lietojumprogrammu.
2. darbība. Izmantojiet šo kodu:
Module Module1Sub divisionFunction(ByVal n1 As Integer, ByVal n2 As Integer)Dim answer As IntegerTryanswer = n1 \ n2Catch ex As DivideByZeroExceptionConsole.WriteLine("Exception: {0}", ex)FinallyConsole.WriteLine("Answer is: {0}", answer)End TryEnd SubSub Main()divisionFunction(4, 0)Console.ReadKey()End SubEnd Module
3. solis) Rīkjoslā noklikšķiniet uz pogas Sākt, lai izpildītu kodu. Jums vajadzētu iegūt šādu izvadi:
Šeit ir koda ekrānuzņēmums:
Koda skaidrojums:
- Moduļa ar moduli izveidošana1.
- Apakšprocedūras ar nosaukumu DivisionFunction izveidošana ar diviem veselu skaitļu argumentiem n1 un n2. ByVal ir VB.NET atslēgvārds, kas norāda, ka argumentu vērtības tiks nodotas pēc vērtības.
- Vesela skaitļa mainīgā ar atbildi izveidošana.
- Bloka Try / Catch sākums. Mums jāpievieno kods, par kuru mums ir aizdomas, ka šajā blokā var būt izņēmums.
- Veicot dalīšanas darbību starp mainīgo n1 un n2 vērtībām. Dalīšanas operācijas rezultāts tiek piešķirts mainīgajai atbildei. Šis kods var radīt izņēmumu, piemēram, kad mēs dalām skaitli ar nulli, tāpēc esam to ieskauj ar Try / Catch blokiem.
- Notverot izņēmumu ar nosaukumu DivideByZeroException un izveidotā izņēmuma ziņojumu piešķirot bijušajam.
- Drukājot tekstu konsolē, lai paziņotu lietotājam par izvirzītā izņēmuma veidu / nosaukumu.
- Visbeidzot bloķēt. Tas izpildīs, vai ir pieķerts izņēmums.
- Uz konsoles drukājot tekstu, kurā redzams sadalīšanas darbības rezultāts.
- Mēģinājuma bloka beigas, tas ir, kļūdu apstrādes koda beigas.
- Apakšprocedūras DivisionFunction beigas.
- Galvenās apakšprocedūras sākums.
- Apakšprocedūras DivisionFunction izsaukšana / izsaukšana Divu veselu skaitļu argumentu vērtības tiek nodotas šeit. Vērtība n1 = 4 un n2 = 0. Tas nozīmē, ka dalīšanas operācija būs 4 \ 0, tas ir, n1 \ n2.
- Pārtraucot konsoles loga gaidīšanu, kamēr lietotājs rīkosies, lai to aizvērtu.
- Galvenās apakšprocedūras beigas.
- Moduļa beigas.
Lietotāja noteikti izņēmumi
VB.NET ļauj definēt savus izņēmumus. Jūs varat iegūt lietotāja definētas izņēmumu klases no ApplicationException klases. Parādīsim to ar piemēru:
1. darbība. Izveidojiet jaunu konsoles lietojumprogrammu.
2. darbība. Izmantojiet šo kodu:
Module Module1Public Class HeightIsZeroException : Inherits ApplicationExceptionPublic Sub New(ByVal text As String)MyBase.New(text)End SubEnd ClassPublic Class HeightDim height As Integer = 0Sub showHeight()If (height = 0) ThenThrow (New HeightIsZeroException("Zero Height found"))ElseConsole.WriteLine("Height is: {0}", height)End IfEnd SubEnd ClassSub Main()Dim hght As Height = New Height()Tryhght.showHeight()Catch ex As HeightIsZeroExceptionConsole.WriteLine("HeightIsZeroException: {0}", ex.Message)End TryConsole.ReadKey()End SubEnd Module
3. solis) Noklikšķiniet uz pogas Sākt augšējā joslā, lai izpildītu kodu. Jums vajadzētu iegūt šādu izvadi:
Šeit ir koda ekrānuzņēmums:
Koda skaidrojums:
- Moduļa ar moduli izveidošana1.
- Izņēmuma klases izveidošana ar nosaukumu HeightIsZeroException. Klase pārmanto visu ApplicationException klasi.
- Apakšprocedūras izveidošana ar nosaukumu Jauns. Tas prasīs vienu virknes argumentu ar tekstu.
- Izsaucot bāzes klases konstruktoru un nododot tam iepriekš minēto argumentu.
- Jaunās apakšprocedūras beigas.
- HeightIsZeroException klases beigas.
- Klases izveidošana ar nosaukumu Augstums. Tās publiskās piekļuves modifikators ir Publisks, kas nozīmē, ka tas būs publiski pieejams.
- Vesela skaitļa mainīgā ar augstumu izveidošana un tā vērtības inicializēšana līdz 0.
- Apakšprocedūras ar nosaukumu showHeight () izveide.
- Pārbaudām, kad mainīgā augstuma vērtība ir 0. Mēs izmantojām nosacījumu Ja… Tad.
- Lai izmestu HeightIsZeroException, ja iepriekš minētais nosacījums ir patiess. Ziņojums Zero Height Found tiks parādīts, kad tiks izmests šis izņēmums.
- Pārējā daļa, kas jāizpilda, ja nosacījums If nav patiess.
- Konsolē drukājams ziņojums, kurā redzams augstums, ja tas nav 0.
- Nosacījuma If beigas.
- Izrādes beigasAugstuma () apakšprocedūra.
- Klases beigas Augstums.
- Galvenās apakšprocedūras sākums.
- Objekta ar nosaukumu Augstums izveidošana kā augstuma klases eksemplārs.
- Izņēmumu apstrādes bloka sākums.
- Izsaucot augstuma klasē noteikto apakšprocedūru showHeight (). Lai piekļūtu šai metodei, mēs izmantojām šīs klases objektu. Šīs rindas rezultātā var rasties izņēmums. Tāpēc mēs to esam iekļāvuši ar izņēmumu apstrādes kodu.
- Notverot HeightIsZeroException izņēmumu kā objektu ex gadījumā, ja tas notiek.
- Ziņojums, kas drukājams uz konsoles, kad tiek noķerts HeightIsZeroException.
- Izņēmumu apstrādes bloka beigas.
- Pārtrauciet konsoles logu, gaidot, kamēr lietotājs rīkojas, lai to aizvērtu.
- Galvenās apakšprocedūras beigas.
- Moduļa beigas.
Objektu mešana
Izņēmuma gadījumā jūs varat izvēlēties mest objektu. Tomēr objektam jābūt atvasinātam no System. Izņēmumu klase tieši vai netieši. Piemēram:
1. darbība. Izveidojiet jaunu konsoles lietojumprogrammu.
2. darbība. Izmantojiet šo kodu:
Module Module1Sub Main()TryThrow New ApplicationException("Throwing a custom exception")Catch ex As ExceptionConsole.WriteLine(ex.Message)FinallyConsole.WriteLine("The Finally Block")End TryConsole.ReadKey()End SubEnd Module
3. solis) Noklikšķiniet uz pogas Sākt augšējā joslā, lai izpildītu kodu. Jums vajadzētu iegūt sekojošo:
Šeit ir koda ekrānuzņēmums:
Koda skaidrojums:
- Moduļa ar moduli izveidošana1.
- Galvenās apakšprocedūras sākums.
- Kļūdu apstrādes koda sākums.
- Izņēmuma objekta mešana. Šis kods var radīt izņēmumu, tāpēc mēs to esam ieskauj ar Try / Catch bloku.
- Notver izņēmumu kā objektu ex, ja līnija met izņēmumu.
- Izņēmuma ziņojuma drukāšana konsolē, ja tas notiek.
- Visbeidzot bloķē, lai palaistu, vai ir nozvejots izņēmums.
- Ziņojums, kas drukājams uz konsoles, kad tiek izpildīts bloks Visbeidzot.
- Izņēmuma apstrādes koda beigas.
- Uz laiku apturiet konsoli, gaidot, kamēr lietotājs rīkojas, lai to aizvērtu.
- Galvenās apakšprocedūras beigas.
- Moduļa beigas.
Kopsavilkums
- Izņēmums attiecas uz problēmu, kas rodas programmas izpildes laikā, ko izraisījis negaidīts apstāklis.
- Ja jums ir aizdomas, ka kāds kods ģenerēs izņēmumu, ieskauj to ar bloku Mēģināt / Noķert.
- Bloks Visbeidzot nāk pēc bloka Izmēģināt / noķert un izpilda, vai ir pieķerts izņēmums.
- VB.NET ļauj mums izveidot pielāgotus izņēmumus.