Obrada iznimki u VB.Net-u (Try Catch)
⚡ Pametni sažetak
Obrada iznimaka u VB.Net-u upravlja greškama tijekom izvođenja, poput dijeljenja s nulom, koristeći ključne riječi Try, Catch, Finally i Throw kako bi program mogao elegantno reagirati na probleme umjesto da se ruši tijekom izvršavanja.
Što je iznimka u VB.Netu?
An izuzetak u VB.Netu se odnosi na problem koji se javlja tijekom izvođenja programa. Do njega je dovela neočekivana okolnost. Dobar primjer je kada izvodite operaciju dijeljenja, a zatim dijelite s nulom (0). Postavit će se iznimka.
Što je rukovanje iznimkama u VB.Netu?
Uz iznimke u VB.Net, možete prenijeti kontrolu nad programom s jednog dijela na drugi. U VB.Netu, iznimke se rješavaju pomoću sljedeće 4 ključne riječi:
| Riječ | Detalji |
|---|---|
| Pokušati | Rad bloka Try je identificirati blok koda za koji će se aktivirati određena iznimka. Trebao bi ga pratiti catch blok(ovi). |
| Ulov | Hvatanje iznimke vrši se u ovom bloku. To je rukovatelj iznimkom u kojem se rukuje iznimkom. |
| Konačno | Upotrijebite blok Finally za pokretanje skupa naredbi bez obzira je li došlo do iznimke ili ne. |
| Baciti | Iznimka se izbacuje nakon pojave problema. Ovo je rad ključne riječi Throw. |
Nakon što su uloge ove četiri ključne riječi jasne, razmotrimo kako se one kombiniraju unutar jedne izjave.
Sintaksa Try Catch u VB.Netu
Naredbe Try Catch u VB.Netu definirane su pomoću donje sintakse:
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
Blok Try/Catch trebao bi okruživati kôd koji može izazvati iznimku. Ovaj kod je poznat kao zaštićeni kod. Možete koristiti više catch naredbi kada trebate uhvatiti različite vrste iznimaka.
Primjer rukovanja iznimkama u VB.Netu s Try Catch i Finally
Pomoću naredbi Try/Catch možete odvojiti svoj obični programski kod od sustava za obradu grešaka. Demonstrirajmo kako obraditi iznimku pomoću ključnih riječi Try, Catch i Finally.
Korak 1) Napravite novu konzolnu aplikaciju.
Korak 2) Upotrijebite ovaj kôd:
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
Korak 3) Pritisnite gumb Start na alatnoj traci za izvršenje koda. Trebali biste dobiti sljedeći izlaz:
Evo snimke zaslona koda:
Objašnjenje Code:
- Stvaranje modula pod nazivom Module1.
- Stvaranje podprocedure pod nazivom divisionFunction s dva cjelobrojna argumenta n1 i n2. ByVal je VB.Net ključna riječ koja navodi da će vrijednosti argumenata biti proslijeđene prema vrijednosti.
- Stvaranje cjelobrojne varijable pod nazivom odgovor.
- Početak bloka Try/Catch. Ovim blokom moramo okružiti kod za koji sumnjamo da bi mogao pokrenuti iznimku.
- Izvođenje operacije dijeljenja između vrijednosti varijabli n1 i n2. Rezultat operacije dijeljenja pridružuje se varijabli odgovor. Ovaj kod može pokrenuti iznimku, na primjer, kada dijelimo broj s nulom, stoga smo ga okružili blokovima Try/Catch.
- Hvatanje iznimke pod nazivom DivideByZeroException i dodjeljivanje generirane poruke o iznimci ex.
- Ispisivanje nekog teksta na konzoli za obavještavanje korisnika o vrsti/nazivu iznimke koja je pokrenuta.
- Blok Finally. Ovo će se izvršiti neovisno o tome je li izuzetak uhvaćen ili ne.
- Ispis teksta na konzoli koji prikazuje rezultat operacije dijeljenja.
- Kraj bloka Try, odnosno kraj koda za obradu grešaka.
- Kraj podpostupka divisionFunction.
- Početak glavnog podpostupka.
- Pozivanje/pozivanje podprocedure divisionFunction. Ovdje se prosljeđuju vrijednosti dvaju cjelobrojnih argumenata. Vrijednost n1=4 i n2=0. To znači da će operacija dijeljenja biti 4\0, odnosno n1\n2.
- Pauziranje prozora konzole čekajući da korisnik poduzme akciju da ga zatvori.
- Kraj glavnog podpostupka.
- Kraj modula.
Korisnički definirane iznimke u VB.Netu
VB.Net vam omogućuje definiranje vlastitih iznimaka. Korisnički definirane klase iznimaka možete dobiti iz klase ApplicationException. Demonstrirajmo to na primjeru:
Primjer korisnički definirane iznimke u VB.Netu
Evo primjera korisnički definirane iznimke u VB.Net-u:
Korak 1) Napravite novu konzolnu aplikaciju.
Korak 2) Koristite sljedeći kôd:
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
Korak 3) Pritisnite gumb Start na gornjoj traci da biste izvršili kod. Trebali biste dobiti sljedeći izlaz:
Evo snimke zaslona koda:
Objašnjenje Code:
- Stvaranje modula pod nazivom Module1.
- Stvaranje klase iznimke pod nazivom HeightIsZeroException. Klasa nasljeđuje sve klase ApplicationException.
- Stvaranje potprocedure pod nazivom New. Trebat će jedan argument niza pod nazivom text.
- Pozivanje konstruktora osnovne klase i prosljeđivanje gornjeg argumenta.
- Kraj novog podpostupka.
- Kraj HeightIsZeroException klase.
- Stvaranje klase pod nazivom Visina. Njegov modifikator javnog pristupa je Public, što znači da će biti javno dostupan.
- Stvaranje cjelobrojne varijable pod nazivom Height i inicijalizacija njezine vrijednosti na 0.
- Stvaranje potprocedure pod nazivom showHeight().
- Provjera kada je vrijednost varijable Visina 0. Koristili smo uvjet If…Then.
- Izbaciti HeightIsZeroException ako je gornji uvjet istinit. Poruka Zero Height Found (Pronađena nulta visina) bit će prikazana kada se pojavi ova iznimka.
- Else dio koji će se izvršiti kada If uvjet nije istinit.
- Poruka za ispis na konzoli koja prikazuje visinu kada nije 0.
- Kraj If uvjeta.
- Kraj potprocedure showHeight().
- Kraj razreda Vis.
- Početak glavnog podpostupka.
- Stvaranje objekta pod nazivom Visina kao instance klase Visina.
- Početak bloka za rukovanje iznimkom.
- Pozivanje podprocedure showHeight() definirane u klasi Height. Koristili smo objekt ove klase za pristup ovoj metodi. Ovaj redak može rezultirati iznimkom. Stoga smo ga okružili kodom za obradu iznimki.
- Hvatanje iznimke HeightIsZeroException kao objekta ex u slučaju da se dogodi.
- Poruka za ispis na konzoli kada se uhvati HeightIsZeroException.
- Kraj bloka za rukovanje iznimkom.
- Pauzirajte prozor konzole čekajući da korisnik poduzme akciju da ga zatvori.
- Kraj glavnog podpostupka.
- Kraj modula.
Izbaci iznimku u VB.Netu
U obradi iznimki možete odabrati bacanje objekta. Međutim, objekt mora biti izveden iz klase System.Exception, izravno ili neizravno. Na primjer:
Primjer Throw Exception u VB.Net
Ispod je primjer iznimke throw u VB.Net-u:
Korak 1) Napravite novu konzolnu aplikaciju.
Korak 2) Koristite sljedeći kôd:
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
Korak 3) Pritisnite gumb Start na gornjoj traci da biste izvršili kod. Trebali biste dobiti sljedeće:
Evo snimke zaslona koda:
Objašnjenje Code:
- Stvaranje modula pod nazivom Module1.
- Početak glavnog podpostupka.
- Početak koda za obradu pogreške.
- Izbacivanje objekta iznimke. Ovaj kod može generirati iznimku stoga smo ga okružili blokom Try/Catch.
- Hvatanje iznimke kao objekta ex ako linija izbaci iznimku.
- Ispis poruke o iznimci na konzoli u slučaju da se dogodi.
- Blok Finally za pokretanje bez obzira je li iznimka uhvaćena ili ne.
- Poruka za ispis na konzoli kada se izvrši blok Finally.
- Kraj koda za rukovanje iznimkom.
- Pauzirajte konzolu neko vrijeme čekajući da korisnik poduzme akciju da je zatvori.
- Kraj glavnog podpostupka.
- Kraj modula.






