Python Rukovanje iznimkama: pokušaj, uhvati, konačno i povisi [Primjer]
U čemu je rukovanje iznimkom Python?
Iznimka je pogreška koja se događa u trenutku izvođenja programa. Međutim, tijekom izvođenja programa, Python generira iznimku koju treba riješiti kako bi se izbjegao pad vašeg programa. U Python jezika, iznimke se aktiviraju automatski na pogreške ili ih može pokrenuti i presresti vaš kod.
Iznimka ukazuje da se, iako se događaj može dogoditi, ova vrsta događaja događa rijetko. Kada metoda ne može obraditi iznimku, izbacuje se svojoj funkciji pozivatelja. Na kraju, kada se izuzetak izbaci iz glavne funkcije, program se naglo prekida.
Uobičajeni primjeri iznimke
- Dijeljenje s nulom
- Pristup datoteci koja ne postoji.
- Zbrajanje dva nekompatibilna tipa
- Pokušavate pristupiti nepostojećem indeksu niza
- Uklanjanje tablice s odspojenog poslužitelja baze podataka.
- Podizanje na bankomatu većeg od raspoloživog iznosa
Zašto biste trebali koristiti iznimke?
Evo razloga za korištenje iznimaka u Python:
- Rukovanje iznimkama omogućuje vam odvajanje koda za rukovanje greškama od normalnog koda.
- Iznimka je a Python objekt što predstavlja grešku.
- Kao i kod komentara koda, iznimke vam pomažu da se podsjetite što program očekuje.
- Pojašnjava kôd i poboljšava čitljivost.
- Omogućuje vam da potaknete posljedice 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.
- In Python, možete podići iznimku u programu korištenjem metode podizanja iznimke.
- Podizanje iznimke pomaže vam da prekinete trenutno izvršavanje koda i vraća iznimku na očekivano stanje dok se ne obradi.
- Obrada iznimaka za komponente koje ih ne mogu izravno obraditi.
Pravila za iznimke
Evo nekih bitnih pravila Python rukovanje iznimkama:
- Iznimke moraju biti objekti klase
- Za iznimke klase, možete koristiti naredbu try s klauzulom osim koja spominje određenu klasu.
- Čak i ako je izjava ili izraz sintaktički ispravan, može prikazati pogrešku kada se pokuša izvršiti.
- Pogreške pronađene tijekom izvođenja nazivaju se iznimke i nisu bezuvjetno fatalne.
Python Mehanizam za rukovanje iznimkama
Rukovanje iznimkama upravlja sljedećih 5 ključnih riječi:
- pokušati
- ulov
- konačno
- baciti
Python Isprobajte izjavu
Naredba try uključuje ključnu riječ try, iza koje slijedi dvotočka (:) i skup kodova u kojima se mogu pojaviti iznimke. Ima jednu ili više klauzula.
Tijekom izvođenja naredbe try, ako se tada nije dogodila iznimka, tumač zanemaruje rukovatelje iznimkama za tu specifičnu naredbu try.
U slučaju da se dogodi bilo kakva iznimka u paketu za pokušaj, paket za pokušaj istječe i kontrola programa prenosi se na odgovarajući osim rukovatelja koji slijedi nakon paketa za pokušaj.
Syntax: try: statement(s)
Izjava o ulovu
Catch blokovi uzimaju jedan po jedan argument, što je vrsta iznimke koju će vjerojatno uhvatiti. Ovi argumenti mogu varirati od specifične vrste iznimke koja se može mijenjati do sveobuhvatne kategorije iznimaka.
Pravila za catch block:
- Blok catch možete definirati pomoću ključne riječi catch
- Parametar Catch Exception uvijek je u zagradama
- Uvijek predstavlja vrstu iznimke koja hvata blokove.
- Kod za rukovanje iznimkom napisan je između dvije {} vitičaste zagrade.
- Možete postaviti više catch blokova unutar jednog try bloka.
- Blok catch možete koristiti samo nakon bloka try.
- Svi catch blokovi trebaju biti poredani od podklase do iznimke superklase.
Primjer:
try } catch (ArrayIndexOutOfBoundsException e) { System.err.printin("Caught first " + e.getMessage()); } catch (IOException e) { System.err.printin("Caught second " + e.getMessage()); }
Konačno Izjava u Python
Finalni blok uvijek se izvršava bez obzira na to je li iznimka bačena ili ne. Konačna ključna riječ omogućuje vam stvaranje bloka koda koji slijedi blok try-catch.
Na kraju, klauzula nije obavezna. Namjera je definirati radnje čišćenja koje bi se trebale provoditi u svim uvjetima.
try: raise KeyboardInterrupt finally: print 'welcome, world!' Output Welcome, world! KeyboardInterrupt
Konačno, klauzula se izvršava prije naredbe try.
Raise Statement in Python
Naredba raise specificira argument koji inicijalizira objekt iznimke. Ovdje zarez slijedi iza imena izuzetka i argumenta ili torke argumenta koji slijedi iza zareza.
Sintaksa:
raise [Exception [, args [, traceback]]]
U ovoj sintaksi, argument je neobavezan, au vrijeme izvođenja, vrijednost argumenta iznimke uvijek je ništa.
Primjer:
A Python iznimka može biti bilo koja vrijednost poput niza, klase, broja ili objekta. Većina ovih iznimaka koje navodi Python jezgra su klase s argumentom koji je instanca klase.
Važno Python greške
Vrsta pogreške | Description |
---|---|
ArithmeticError | ArithmeticError djeluje kao osnovna klasa za sve aritmetičke iznimke. Podiže se za pogreške u aritmetičkim operacijama. |
ImportError | ImportError se javlja kada pokušavate uvesti modul koji nije prisutan. Ova vrsta iznimke događa se ako ste pogriješili pri upisivanju naziva modula ili modula koji nije prisutan u standardnoj putanji. |
Pogreška indeksa | IndexErroris se pojavljuje kada pokušate uputiti niz koji je izvan raspona. |
KeyError | Kada se određeni ključ ne pronađe u rječniku, javlja se iznimka KeyError. |
NameError | NameError se pojavljuje kada se ime spominje u kodu koji nikada ne postoji u lokalnom ili globalnom prostoru imena. |
ValueError | Pogreška vrijednosti pojavljuje se kada funkcija ili ugrađena operacija primi argument koji može biti ispravnog tipa, ali nema odgovarajuću vrijednost. |
EOFerror | Ova vrsta pogreške pojavljuje se kada jedna od ugrađenih funkcija (input() ili raw_input()) dosegne EOF uvjet bez čitanja podataka. |
ZeroDivisonError | Ova vrsta pogreške pojavljuje se kada se dijeljenje ili modul s nulom odvija za sve numeričke vrste. |
IOError- | Ova vrsta pogreške pojavljuje se kada ulazno/izlazna operacija ne uspije. |
sintaktička pogreška | SyntaxErrors se javlja kada postoji pogreška u Python sintaksa. |
IdentificationError | Ova se pogreška pojavljuje kada uvlaka nije ispravno definirana |
Ostalo važno Python iznimke
izuzetak | Description |
---|---|
Aritmetička iznimka | Aritmetička pogreška, kao što je dijeljenje s nulom. |
ArraylndexOutOfBoundsException | Indeks polja je izvan granica. |
ArrayStoreException | Dodjela vam pomaže u elementu polja nekompatibilnog tipa. |
ClassCastException | Nevažeći cast |
MlegalMonitorStateException | Nedopušten rad monitora, poput čekanja na otključanu nit. |
MlegalStateException | Okruženje ili aplikacija su u pogrešnom stanju. |
ClassNotFoundException | Klasa nije pronađena. |
CloneNotSupportedException | Pokušaj kloniranja objekta koji ne implementira Cloneable sučelje. |
Illegal AccessException | Pristup razredu je odbijen. |
InstantiationException | Javlja se kada pokušate stvoriti objekt sučelja ili apstraktne klase. |
CloneNotSupportedException | Pokušaj kloniranja objekta koji ne implementira sučelje. |
Pogreška nasuprot iznimkama
greška | iznimke |
---|---|
Sve greške u Python su neprovjerene vrste. | Iznimke uključuju označenu i neoznačenu vrstu. |
Pogreške se javljaju u vremenu izvođenja koje nije poznato prevoditelju. | Iznimke se mogu obnoviti rukovanjem njima uz pomoć try-catch blokova. |
Pogreške su uglavnom uzrokovane okruženjem u kojem se aplikacija izvodi. | Sama aplikacija uzrokuje iznimke. |
Primjeri: OutofMemoryError |
Primjeri: Provjerene iznimke, SQL iznimka, NullPointerException itd. |
rezime
- Iznimka je greška koja se dogodila tijekom izvođenja programa.
- Iznimka ukazuje da se, iako se događaj može dogoditi, ova vrsta događaja događa rijetko.
- Uobičajeni primjeri izuzetaka su 1) Dijeljenje s nulom, 2) Pristup datoteci koja ne postoji, 3) Zbrajanje dviju nekompatibilnih vrsta.
- Iznimka je a Python objekt koji predstavlja grešku.
- Naredba try uključuje ključnu riječ try, iza koje slijedi dvotočka (:) i skup kodova u kojima se mogu pojaviti iznimke. Ima jednu ili više klauzula.
- Catch blokovi uzimaju jedan po jedan argument, što je vrsta iznimke koju će vjerojatno uhvatiti.
- Naredba raise specificira argument koji inicijalizira objekt iznimke.
- Konačno, blok se uvijek izvršava bez obzira na to je li izuzetak bačen ili ne.