Što je iznimka u Pythonu?
Iznimka je pogreška koja se događa u vrijeme izvršavanja programa. Međutim, dok izvodi program, Python generira iznimku kojom bi se trebalo rukovati kako bi se izbjeglo rušenje vašeg programa. Na jeziku Python, iznimke se automatski pokreću na pogreškama ili ih vaš kôd može pokrenuti i presresti.
Iznimka ukazuje da se, iako se događaj može dogoditi, ova vrsta događaja događa rijetko. Kada se metoda ne može nositi s iznimkom, ona se prebacuje na funkciju pozivatelja. Na kraju, kada se izuzetak izbaci iz glavne funkcije, program se naglo prekida.
U ovom vodiču za izuzetno rukovanje Pythonom naučit ćete:
- Što je iznimka u Pythonu?
- Uobičajeni primjeri iznimaka
- Zašto biste trebali koristiti iznimke?
- Pravila o iznimkama
- Izniman mehanizam rukovanja
- Izjava o pokušaju
- Izjava o ulovu
- Izjava o podizanju
- Važne Python pogreške
- Ostale važne iznimke Pythona
- Pogreška nasuprot iznimkama
Uobičajeni primjeri izuzetaka:
- Podjela nula
- Pristup datoteci koja ne postoji.
- Dodatak dvije nekompatibilne vrste
- Pokušaj pristupa nepostojećem indeksu niza
- Uklanjanje tablice s nepovezanog poslužitelja baze podataka.
- Podizanje na bankomatu više od raspoloživog iznosa
Zašto biste trebali koristiti iznimke?
Evo razloga za upotrebu iznimaka u Pythonu:
- Rukovanje iznimkama omogućuje vam odvajanje koda za rukovanje pogreškama od normalnog koda.
- Iznimka je Python objekt koji predstavlja pogrešku.
- Kao i kod komentara na kod, iznimke pomažu da se podsjetite na ono što program očekuje.
- Pojašnjava kôd i poboljšava čitljivost.
- Omogućuje stimuliranje posljedica jer se rješavanje pogrešaka odvija na jednom mjestu i na jedan način.
- Iznimka je prikladna metoda za rukovanje porukama o pogreškama.
- U Pythonu možete podići iznimku u programu pomoću metode podizanja iznimke.
- Podizanje iznimke pomaže vam u prekidu trenutnog izvršavanja koda i vraća iznimku u očekivanje dok se ne obradi.
- Obrada iznimki za komponente koje se s njima ne mogu izravno nositi.
Pravila o iznimkama
Evo nekoliko bitnih pravila rukovanja iznimkama Pythona:
- Iznimke moraju biti objekti klase
- Za iznimke klasa možete upotrijebiti izjavu try s klauzulom osim koja spominje određenu klasu.
- Čak i ako su izjava ili izraz sintaksički ispravni, može se prikazati pogreška kada se pokuša izvršiti.
- Pogreške pronađene tijekom izvršavanja nazivaju se iznimkama i nisu bezuvjetno kobne.
Izniman mehanizam rukovanja
Rukovanjem iznimkama upravlja sljedećih 5 ključnih riječi:
- probati
- ulov
- konačno
- bacanje
Izjava o pokušaju
Izjava try uključuje ključnu riječ try, nakon čega slijedi dvotočka (:) i niz koda u kojem se mogu pojaviti iznimke. Ima jednu ili više klauzula.
Tijekom izvršavanja izjave try, ako se tada nisu dogodile iznimke, tumač ignorira rukovatelje iznimkama za taj određeni pokušaj izraza.
U slučaju da se dogodi bilo kakva iznimka u paketu za isprobavanje, paket za isprobavanje istječe i kontrola programa prebacuje se na podudaranje, osim na rukovatelj koji slijedi paket za isprobavanje.
Syntax:try:statement(s)
Izjava o ulovu
Blokovi ulova uzimaju po jedan argument, što je vrsta iznimke koju će vjerojatno uhvatiti. Ti se argumenti mogu kretati od određene vrste iznimke koja se može mijenjati do sveobuhvatne kategorije iznimki.
Pravila za blok ulova:
- Blok catch možete definirati pomoću ključne riječi catch
- Parametar Catch Exception uvijek je priložen u zagradama
- Uvijek predstavlja vrstu iznimke koja hvata ručke blokova.
- Kôd za rukovanje iznimkama zapisan je između dvije {} kovrčave zagrade.
- Možete smjestiti više blokova catch unutar jednog bloka try.
- Blok catch možete koristiti tek nakon bloka try.
- Sav blok catch trebao bi se poredati od iznimke podklase do superklase.
Primjer:
try}catch (ArrayIndexOutOfBoundsException e) {System.err.printin("Caught first " + e.getMessage()); } catch (IOException e) {System.err.printin("Caught second " + e.getMessage());}
Napokon Blok
Konačno, blok se uvijek izvršava bez obzira na izuzetak ili ne. Završna ključna riječ omogućuje vam stvaranje bloka koda koji slijedi blok try-catch.
Konačno, klauzula nije obavezna. Namijenjena je definiranju akcija čišćenja koje bi trebale biti izvršene u svim uvjetima.
try:raise KeyboardInterruptfinally:print 'welcome, world!'OutputWelcome, world!KeyboardInterrupt
Konačno, klauzula se izvršava prije iskaza try.
Izjava o podizanju
Izraz rise navodi argument koji inicijalizira objekt iznimke. Ovdje zarez slijedi ime izuzetka i argument ili skup argumenata koji slijedi zarez.
Sintaksa:
raise [Exception [, args [, traceback]]]
U ovoj sintaksi argument je neobavezan, a u vrijeme izvršavanja vrijednost argumenta iznimke uvijek nije.
Primjer:
Iznimka Pythona može biti bilo koja vrijednost poput niza, klase, broja ili objekta. Većina ovih iznimaka koje pokreće Python jezgra su klase s argumentom koji je instanca klase.
Važne Python pogreške
Vrsta pogreške | Opis |
ArithmeticError | ArithmeticError djeluje kao osnovna klasa za sve aritmetičke iznimke. Povisuje se za pogreške u aritmetičkim operacijama. |
Pogreška uvoza | ImportError se pojavljuje kada pokušavate uvesti modul koji nije prisutan. Ova vrsta iznimke događa se ako ste pogriješili pri upisu imena modula ili modula koji nije prisutan u standardnoj putanji. |
Pogreška indeksa | IndexErroris se podiže kada pokušate uputiti niz koji je izvan dosega. |
KeyError | Kada se određeni ključ ne pronađe u rječniku, postavlja se iznimka KeyError. |
NameError | NameError se pojavljuje kada se na ime govori u kodu koji nikada ne postoji u lokalnom ili globalnom prostoru imena. |
Pogreška vrijednosti | Pogreška vrijednosti pojavljuje se kada funkcija ili ugrađena operacija primi argument koji je možda ispravnog tipa, ali nema odgovarajuću vrijednost. |
EOFerror | Ova vrsta pogreške pojavljuje se kada jedna od ugrađenih funkcija (input () ili raw_input ()) postigne EOF uvjet bez čitanja podataka. |
ZeroDivisonError | Ova vrsta pogreške nastala je kada se dogodi dijeljenje ili modul s nulom za sve numeričke vrste. |
IOError- | Ova vrsta pogreške nastaje kada operacija unosa / izlaza ne uspije. |
sintaktička pogreška | SyntaxErrors pojavljuju se kada postoji pogreška u Python sintaksi. |
Pogreška uvlačenja | Ova se pogreška pojavljuje kada uvlačenje nije pravilno definirano |
Ostale važne iznimke Pythona
Iznimka | Opis |
ArithmeticException | Aritmetička pogreška, poput dijeljenja s nulom. |
ArraylndexOutOfBoundsException | Indeks niza je izvan granica. |
ArrayStoreException | Dodjela vam pomaže elementu niza nekompatibilnog tipa. |
ClassCastException | Nevažeća uloga |
MlegalMonitorStateException | Nezakonit rad monitora, poput čekanja na otključanoj niti. |
MlegalStateException | Okoliš ili aplikacija su u pogrešnom stanju. |
ClassNotFoundException | Predmet nije pronađen. |
CloneNotSupportedException | Pokušaj kloniranja objekta koji ne implementira Cloneable sučelje. |
Ilegalni AccessException | Pristup predavanju je odbijen. |
InstantiationException | Pojavljuje se kada pokušavate stvoriti objekt sučelja ili apstraktne klase. |
CloneNotSupportedException | Pokušaj kloniranja objekta koji ne implementira sučelje. |
Pogreška nasuprot iznimkama
Pogreška | Iznimke |
Sve pogreške u Pythonu su neprovjereni tip. | Iznimke uključuju i provjereni i neprovjereni tip. |
Pogreške se javljaju u vrijeme izvođenja koje prevoditelju nije poznato. | Iznimke se mogu oporaviti rukovanjem njima uz pomoć try-catch blokova. |
Pogreške su uglavnom uzrokovane okolinom u kojoj se aplikacija izvodi. | Sama aplikacija uzrokuje iznimke. |
Primjeri: OutofMemoryError | Primjeri: provjerene iznimke, SQL iznimka, NullPointerException, itd. |
Sažetak
- Iznimka je pogreška koja se dogodila tijekom izvršavanja programa.
- Iznimka ukazuje da se, iako se događaj može dogoditi, ova vrsta događaja događa rijetko.
- Uobičajeni primjeri iznimaka su 1) Podjela nula, 2) Pristup datoteci koja ne postoji, 3) Dodavanje dva nekompatibilna tipa.
- Iznimka je Python objekt koji predstavlja pogrešku.
- Izjava try uključuje ključnu riječ try, nakon čega slijedi dvotočka (:) i niz koda u kojem se mogu pojaviti iznimke. Ima jednu ili više klauzula.
- Blokovi ulova uzimaju po jedan argument, što je vrsta iznimke koju će vjerojatno uhvatiti.
- Izraz rise navodi argument koji inicijalizira objekt iznimke.
- Konačno, blok se uvijek izvršava bez obzira na izbacivanje iznimke ili ne.