Rukovanje iznimkama Pythona: Pokušajte, uhvatite i konačno

Sadržaj:

Anonim

Š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:

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