c exception handling tutorial with code examples
Obravnava izjem je metoda za obravnavo napak, ki se lahko pojavijo med izvajanjem programa. Ta vadnica pojasnjuje ravnanje z izjemami v jeziku C # s primeri kode:
vprašanja in odgovori za intervicijsko testiranje pdf
Obravnava izjem se uporablja za zagotovitev, da se potek programa nadaljuje tudi v primeru napake med izvajanjem. Izjeme so predmeti, ki se vržejo ob kakršni koli napaki med izvajanjem.
Če se izjeme ne obravnavajo, bo C # ustvaril sporočilo o izjemi in zaključil program, tu se pojavi slika obravnave izjem.
=> Tukaj preberite vodnik za začetnike C #
Kaj se boste naučili:
- Kaj so izjeme?
- Ključne besede za obravnavo izjem
- Razredi izjem so v C #
- Obravnava izjem v C #
- Zaključek
- Priporočeno branje
Kaj so izjeme?
Izjeme so napake brez primere, ki se lahko pojavijo v vašem programu med izvajanjem. Programerji večino časa zlahka zaznajo nekatere napake, kot so preverjanje veljavnosti ali preverjanje ničnosti ali preverjanje nekaterih vrednosti.
Toda v določenih časih ne moremo predvideti, kaj in kdaj se bo pojavila napaka. Na primer, recimo, da iščem datoteko na lokaciji. Moj program bo deloval popolnoma v redu, dokler datoteka ne bo prisotna, in če se bo datoteka nekako izbrisala, bo program pokazal napako.
Izjeme se ne pojavljajo redno, vendar se vseeno lahko zgodijo in z njimi boste vedno želeli ravnati previdno. Za njihovo obdelavo uporabljamo obdelavo izjem.
Vsakič, ko pride do napake, rečemo, da je vržena, 'vržen' je predmet iz System.Exception razred v jeziku C #. The System.Exception class ponuja različne metode in lastnosti, ki podajajo podrobnosti o napaki, s katero se je pravkar srečal vaš program.
Tako kot lastnost sledenja skladov, ki zagotavlja sklad, za katerega je prišlo do težave, ali lastnost sporočila, ki vsebuje opis izjeme.
youtube video pretvornik v mp4 format
Ključne besede za obravnavo izjem
Izjeme ponujajo postopek za nadzor določenega dela programa, tako da tudi če je v tem delu izjema, se nadzor programa prenese v drug del programa. V C # je ravnanje z izjemami v osnovi zgrajeno okoli štirih ključnih besed: met, poskus, ulov in končno .
vrgel
Kot smo že razpravljali, je throw iz predmeta System.Exception razred v C #. Omogoča programu, da vrže napako, kadar koli naleti nanjo.
poskusite
Poskusi blok zapre blok kode, ki lahko povzroči, da program vrne izjemo. Sledi en ali več ulovnih blokov.
ulov
Ko poskusni blok naleti na izjemo, poda nadzor nad ulovnim blokom, da ujame izjemo. Blok catch lahko vsebuje tudi nabor kod, ki jih mora program izvesti v primeru izjeme, ali pa samo ujame izjemo in ne naredi ničesar, odvisno od scenarija in zahteve.
končno
Končni blok se uporablja za izvajanje določenega delčka kode ali navodila ne glede na pojav izjeme. Končno se blok vedno izvede in se lahko izvede takoj po poskusnem bloku, če program ne najde nobene izjeme ali pa se izvede po bloku catch, ko program ujame izjemo.
Razredi izjem so v C #
Vse izjeme v C # izhajajo neposredno ali posredno iz System.Exception razred.
Oglejmo si na kratko nekaj najpogostejših izjem:
- System.IO.IOException: Obravnava vse napake, povezane z vhodom in izhodom.
- System.DividedByZeroException: Obravnava napako, vrženo, ko je število deljeno z nič.
- System.NullReferenceException : Obravnava vse napake, do katerih lahko pride, ko se sklicuje na ničelni objekt.
- System.IndexOutOfRangeException: Obravnava napako, vrženo, ko program poskuša dostopati do indeksa, ki je za obseg izven dosega.
- System.OutOfMemoryException: Obravnava napako zaradi pomanjkanja pomnilnika.
Obravnava izjem v C #
C # ima zelo natančno določeno rešitev za obravnavo kakršnih koli izjem, ki se lahko pojavijo z uporabo bloka try and catch. Z uporabo tega bloka lahko osnovni stavek programa ločimo od drugih stavkov.
Primer:
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(); } } }
V zgornjem primeru smo priložili kodo za odpiranje datoteke pod poskusnim blokom. Ker nismo navedli nobene veljavne poti do datoteke, bi morala koda povzročiti napako. Zdaj smo napako ujeli v našem bloku catch. Če datoteka ne obstaja na dani poti do datoteke, bo koda vrgla FileNotFoundException.
To izjemo bo ujel blok catch, kjer smo že določili pričakovano izjemo. Zdaj si predstavljajmo, če naša koda vrže kakšno drugo izjemo, razen tiste, ki smo jo že definirali, potem je naš blok ne bo mogel ujeti. Če želite ujeti katero koli generično izjemo, bomo dodali še en blok catch.
Oglejmo si našo posodobljeno kodo:
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(); } } }
Ta generični ulovni blok bo lahko ujel vse izjeme, ki se lahko vržejo v poskusni blok. Zdaj pa dodajte še zaključni blok, da to dokončate. Če bomo to poenostavili, samo natisnimo sporočilo z uporabo končnega bloka
brezplačni DVD ripper za Windows 8
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(); } } }
Tu smo pravkar dodali zaključni blok s preprostim sporočilom. V blok lahko dodate tudi nekaj stavkov po meri. Toda celotna struktura programa bo ostala podobna tisti, prikazani tukaj.
Blok Končno se bo vedno izvedel ne glede na to, ali obstaja izjema ali ne. Program se bo začel od poskusnega bloka in se nato premaknil neposredno do končnega bloka, če ne bo napak / izjem. Če naleti na izjemo, se najprej premakne na ulov in nato izvede zadnji blok.
Ali obstaja pogoj, ko dokončni blok ne bo izveden?
Kot že ime pove, se zaključni blok izvede na koncu in je zadnji blok kode, ki bo izveden. Na koncu se bo blok vedno izvedel, ko se aplikacija izvaja. Edini čas, ko dokončno blokiranje ne bo izvedeno, je, ko se aplikacija sesuje ali namerno ubije z ukazom procesa.
Zaključek
Če z izjemami ne ravnamo pravilno, bodo povzročile napake v vašem programu. Če v kodi niste uporabili blokov poskus / ulov kjer koli, bo program prekinil s sporočilom, ki prikazuje izjemo. Za splošnega uporabnika bo to napako zelo težko izslediti nazaj do izvorne kode in jo odpraviti.
Zato je vedno dobra praksa, če v svojem programu zagotovite obravnavo izjem.
Vzorčna 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(); } } }
=> Oglejte si našo celotno serijo usposabljanj za C # tukaj
Priporočeno branje
- Vadnica za funkcije / metode C # s primeri kode
- Vadnica Python DateTime s primeri
- Vadnica za SVN: Upravljanje izvorne kode z uporabo Subverzije
- C # Vadnica za niz - String metode s primeri kode
- Obravnava izjem v jeziku C ++
- Tortoise SVN Vadnica: Revizije v odlagališču kod
- Vadnica za AWS CodeBuild: Izvlečenje kode iz Maven Build
- Kako ravnati z izjemami v groovy skriptih SoapUI - Vadnica SoapUI št. 11