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:

  1. pokušati
  2. ulov
  3. konačno
  4. 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.