c exception handling tutorial with code examples
Rukovanje iznimkama je metoda za rukovanje pogreškama koje se mogu dogoditi tijekom izvršavanja programa. Ovaj vodič objašnjava rukovanje iznimkama na C # s primjerima koda:
najbolje aplikacije za pisanje za Windows 10
Rukovanje iznimkama koristi se za osiguravanje nastavka tijeka programa čak i ako postoji pogreška u izvođenju. Iznimke su objekti koji se bacaju prilikom nailaženja na bilo kakvu pogrešku u izvođenju.
Ako se izuzeci ne obrade, tada će C # stvoriti poruku o izuzeću i završiti program, tu se obrađuje iznimka.
=> Ovdje pročitajte C # Vodič za početnike
Što ćete naučiti:
- Koji su izuzeci?
- Ključne riječi za rukovanje iznimkama
- Razredi izuzetaka prisutni na C #
- Rukovanje iznimkama u C #
- Zaključak
- Preporučena literatura
Koji su izuzeci?
Iznimke su greške bez presedana koje se mogu pojaviti unutar vašeg programa tijekom izvođenja. Programeri većinu vremena mogu lako otkriti neke pogreške poput provjere valjanosti ili provjere nule ili tijekom provjere nekih vrijednosti.
Ali postoje određena vremena kada ne možemo predvidjeti što će se ili kada pojaviti pogreška. Na primjer, recimo da tražim datoteku na mjestu. Moj će se program izvršavati savršeno dok datoteka ne bude prisutna, a ako se datoteka nekako izbriše, moj će program izbaciti pogrešku.
Iznimke se ne događaju redovito, ali svejedno se mogu dogoditi i uvijek ćete ih htjeti pažljivo riješiti. Za rukovanje njima koristimo rukovanje iznimkama.
Kad god se dogodi pogreška, kažemo da je bačena, 'bačen' je objekt iz System.Izuzetak razred u C #. The System.Izuzetak klasa nudi različite metode i svojstva koja daju detalje o pogrešci koju je vaš program upravo naišao.
Poput svojstva praćenja steka koje pruža stog za koji se pojavio problem ili svojstva poruke koje pruža opis iznimke.
Ključne riječi za rukovanje iznimkama
Iznimke nude postupak za upravljanje određenim dijelom programa, tako da čak i ako u tom dijelu postoji iznimka, tada se programska kontrola prenosi na drugi dio programa. U C # rukovanje iznimkama u osnovi se temelji na četiri ključne riječi: baci, probaj, uhvati i konačno .
bacanje
Kao što smo već razgovarali bacanje je objekt iz System.Izuzetak razred u C #. Omogućuje programu da baci pogrešku kad god je naiđe.
probati
Blokiraj pokušaj obuhvaća blok koda koji može uzrokovati da program izbaci iznimku. Slijedi jedan ili više blokova ulova.
ulov
Kada blok try naiđe na iznimku, pruža kontrolu bloku catch kako bi uhvatio iznimku. Blok catch također može sadržavati skup kodova koje program treba izvršiti u slučaju iznimke ili može jednostavno uhvatiti iznimku i ne poduzimati ništa ovisno o scenariju i zahtjevu.
konačno
Završni blok koristi se za izvršavanje određenog isječka koda ili upute, bez obzira na pojavu iznimke. Napokon se blok uvijek izvršava i može se izvršiti odmah nakon pokušajnog bloka ako program ne pronađe nikakvu iznimku ili se može izvršiti nakon bloka catch kada program uhvati iznimku.
pitanja za intervju za podešavanje performansi oracle 11g
Razredi izuzetaka prisutni na C #
Sve iznimke u C # izvedene su izravno ili neizravno iz System.Izuzetak razred.
Kratko ćemo pogledati neke od najčešćih iznimaka:
- System.IO.IOException: Obrađuje sve pogreške povezane s ulazom i izlazom.
- System.DividedByZeroException: Obrađuje pogrešku bačenu kada se broj podijeli s nulom.
- System.NullReferenceException : Obrađuje svaku pogrešku koja se može pojaviti kada se referencira nulti objekt.
- System.IndexOutOfRangeException: Obrađuje grešku bačenu kada program pokušava pristupiti indeksu koji je izvan dosega niza.
- System.OutOfMemoryException: Obrađuje pogrešku bačenu zbog nedovoljne prisutnosti memorije.
Rukovanje iznimkama u C #
C # ima vrlo dobro definirano rješenje za rukovanje bilo kojom vrstom iznimke koja se može dogoditi pomoću bloka try and catch. Koristeći ovaj blok, jezgra programa može se odvojiti od ostalih izjava.
Primjer:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.IO; namespace ConsoleApp1 { class Program { static void Main(string[] args) { try { File.OpenRead('InvalidFile'); } catch (FileNotFoundException ex) { Console.WriteLine(ex.ToString()); } Console.ReadLine(); } } }
U, gornji primjer, priložili smo naš kod za otvaranje datoteke pod blokom try. Budući da nismo naveli nijedan valjani put do datoteke, kôd bi trebao dovesti do pogreške. Sada smo uhvatili pogrešku u našem bloku catch. Ako datoteka ne postoji u zadanom putu do datoteke, tada će kôd izbaciti FileNotFoundException.
Ovu će iznimku uhvatiti blok catch gdje smo već definirali očekivanu iznimku. Zamislimo sada ako naš kod izbaci neku drugu iznimku, osim one koju smo već definirali, tada je naš blok neće moći uhvatiti. Da bismo uhvatili bilo koju generičku iznimku, dodati ćemo još jedan blok catch.
Pogledajmo naš ažurirani kôd:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.IO; namespace ConsoleApp1 { class Program { static void Main(string[] args) { try { File.OpenRead('InvalidFile'); } catch (FileNotFoundException ex) { Console.WriteLine(ex.ToString()); } catch (Exception e) { Console.WriteLine(e.ToString()); } Console.ReadLine(); } } }
Ovaj generički blok catch moći će uhvatiti sve iznimke koje se mogu ubaciti unutar bloka try. Sad ćemo dodati i konačno blok da to dovršimo. Da bismo to učinili jednostavnim, samo ispišite poruku pomoću bloka konačno.
kako otvoriti .jar datoteke s Java
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.IO; namespace ConsoleApp1 { class Program { static void Main(string[] args) { try { File.OpenRead('InvalidFile'); } catch (FileNotFoundException ex) { Console.WriteLine(ex.ToString()); } catch (Exception e) { Console.WriteLine(e.ToString()); } finally { Console.WriteLine('Finally block executed'); } Console.ReadLine(); } } }
Evo, upravo smo dodali konačno blok jednostavnom porukom. U blok možete dodati i neke prilagođene izjave. Ali cjelokupna struktura programa ostat će slična onoj koja je ovdje prikazana.
Blok Konačno uvijek će se izvršiti bez obzira postoji li iznimka ili ne. Program će započeti od pokušaj bloka, a zatim će se prebaciti izravno u blok konačno ako nema pogrešaka / iznimaka. Ako naiđe na iznimku, prvo će prijeći na catch, a zatim će izvršiti završni blok.
Postoji li uvjet kada se konačni blok neće izvršiti?
Kao što naziv sugerira, završni blok se izvršava na kraju i konačni je blok koda koji će se izvršiti. Konačno, blok će se uvijek izvršiti kad je aplikacija pokrenuta. Jedino kada se konačno blok neće izvršiti je kada se aplikacija sruši ili je namjerno ubijena pomoću naredbe procesa.
Zaključak
Ako se s iznimkama ne postupa pravilno, one će uzrokovati pogreške u vašem programu. Ako nigdje unutar koda niste koristili blokove try / catch, tada će se vaš program prekinuti s porukom koja prikazuje iznimku. Generičkom korisniku bit će vrlo teško vratiti grešku natrag do izvornog koda i riješiti je.
Stoga je uvijek dobra praksa osigurati rukovanje iznimkama u svom programu.
Uzorak koda
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.IO; namespace ConsoleApp1 { class Program { static void Main(string[] args) { try { File.OpenRead('InvalidFile'); } catch (FileNotFoundException ex) { Console.WriteLine(ex.ToString()); } catch (Exception e) { Console.WriteLine(e.ToString()); } finally { Console.WriteLine('Finally block executed'); } Console.ReadLine(); } } }
=> Pogledajte našu cjelovitu seriju obuka za C # ovdje
Preporučena literatura
- Vodič za funkcije # C / Metode s primjerima koda
- Python DateTime Vodič s primjerima
- SVN Vodič: Upravljanje izvornim kodom pomoću Subverzije
- Vodič za niz stringa C # - Nizne metode s primjerima koda
- Rukovanje iznimkama na C ++
- Vodič za kornjače SVN: Revizije u spremištu koda
- AWS CodeBuild Tutorial: Izdvajanje koda iz Maven Build-a
- Kako postupati s iznimkom u Groapy skriptama SoapUI - Vodič za SoapUI br. 11