Python Obrada iznimki: try, except, finally, raise

โšก Pametni saลพetak

Python Obrada iznimaka omoguฤ‡uje vaลกem programu da reagira na pogreลกke tijekom izvoฤ‘enja umjesto da se ruลกi. Ovdje ฤ‡ete nauฤiti kako try, except, finally i raise rade, zaลกto su iznimke vaลพne i uobiฤajene ugraฤ‘ene vrste pogreลกaka s kojima ฤ‡ete se susresti.

  • โš ๏ธ ล to je to: Iznimka je pogreลกka u vremenu izvoฤ‘enja koja Python podiลพe kada neลกto krene po zlu.
  • ๐Ÿ›ก๏ธ pokuลกaj / osim: Blok try izvrลกava riziฤan kod; except hvata i obraฤ‘uje iznimku.
  • ๐Ÿงน konaฤno: Blok finally se uvijek izvrลกava, bez obzira na to je li se dogodio izuzetak ili ne.
  • ๐Ÿš€ podiฤ‡i: Naredba raise omoguฤ‡uje vam namjerno pokretanje iznimke.
  • ๐Ÿ“‹ Vrste pogreลกaka: Uobiฤajene iznimke ukljuฤuju ValueError, KeyError, IndexError i ZeroDivisionError.
  • ๐Ÿค– Pomoฤ‡ umjetne inteligencije: Alati umjetne inteligencije poput Copilota generiraju blokove try-except i predlaลพu vrste pogreลกaka.

Python iznimka Rukovanje

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 se ne predstavlja. Ova vrsta iznimke se javlja ako ste napravili typing greลกka u nazivu modula ili modul 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 abstract klasa.
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.

Pitanja i odgovori

Obrada iznimaka je proces reagiranja na pogreลกke tijekom izvoฤ‘enja kako se vaลก program ne bi sruลกio. Python koristi blokove try i except za hvatanje iznimki i umjesto toga pokretanje koda za oporavak.

Code ลกto bi moglo propasti ide unutar bloka try. Ako se dogodi iznimka, Python skaฤe na odgovarajuฤ‡i except blok, koji obraฤ‘uje greลกku i dopuลกta programu da nastavi s izvrลกavanjem.

Blok finally se izvrลกava bez obzira na to je li iznimka izazvana ili ne, pa je idealan za zadatke ฤiลกฤ‡enja poput zatvaranja datoteka ili oslobaฤ‘anja resursa koji se uvijek moraju dogoditi.

Naredba raise namjerno pokreฤ‡e iznimku. Moลพete izazvati ugraฤ‘enu iznimku poput ValueError ili prilagoฤ‘enu iznimku kako biste signalizirali da se dogodila pogreลกka.

Pogreลกke, poput SyntaxError, obiฤno se ne mogu oporaviti i zaustaviti program. Iznimke su dogaฤ‘aji tijekom izvoฤ‘enja koje moลพete uhvatiti i obraditi blokovima try i except.

AI asistenti poput GitHub Copilota samodovrลกavaju try-except blokove, predlaลพu pravu vrstu iznimke za hvatanje i generiraju finally cleanup kod iz kratkog opisa vaลกe logike.

Da. Alati s umjetnom inteligencijom mogu automatizirati prelamanjeping riziฤan kod u try-except blokovima, preporuฤiti specifiฤne iznimke umjesto golog excepta i dodati zapisivanje kako bi se greลกke lakลกe otklanjale.

Uobiฤajene ugraฤ‘ene iznimke ukljuฤuju ValueError, TypeError, KeyError, IndexError, ImportError, NameError i ZeroDivisionError. Svaka signalizira odreฤ‘enu vrstu problema tijekom izvoฤ‘enja u vaลกem kodu.

Saลพmite ovu objavu uz: