Piton

Iznimka Pythona

Iznimka Pythona

Iznimka je događaj koji nastaje tijekom izvršavanja programa radi prekida ili promjene normalnog tijeka programa. Na primjer, pogreška dovodi do iznimke. Kao i drugi programski jezici, i Python sadrži mnoge ugrađene iznimke. Te se iznimke podižu ako se prilikom izvođenja programa naiđe na pogrešku. Vrsta pogreške određuje koja će se iznimka pokrenuti. Kada se dogodi iznimka, tumač Python provjerava obrađuje li se iznimka; ako ne, prekida program. Ovaj članak objašnjava iznimke u Pythonu kroz razne primjere.

Ugrađene iznimke Pythona

Kao što je ranije rečeno, Python ima mnogo ugrađenih iznimaka koji se pojavljuju kada se tijekom izvršenja programa dogodi pogreška. Svaka iznimka izvedena je iz osnovne klase "Iznimka". Sljedeće uključuje neke ugrađene iznimke Pythona, zajedno s kratkim opisom svake vrste iznimke:

Iznimka Opis
Iznimka Svaka iznimka izvedena je iz ove klase.
Pogreška uvoza Ova se iznimka postavlja kada se uvozi određeni modul i on nije pronađen.
EOFError Ovo je iznimka na kraju datoteke. Ova se iznimka događa kada se dosegne kraj datoteke.
ZeroDivisionError Ova se iznimka pojavljuje kada se broj podijeli s nulom.
KeyError Ova se iznimka pokreće ako se navede ili koristi određeni ključ koji nije definiran u rječniku.
Pogreška indeksa Ova se iznimka postavlja kada se pokuša pristupiti indeksu niza koji nije u rasponu.
FloatingPointError Ova se iznimka postavlja kada operacija s pomičnom zarezom ne uspije.

Ovo su neke od ugrađenih iznimaka u Pythonu. Molimo posjetite službenu dokumentaciju za više informacija o korištenju ugrađenih iznimaka u Pythonu, koji se nalaze na https: // docs.piton.org / 3 / library / iznimke.html.

Upotreba iznimke u Pythonu

Iznimke u Pythonu obrađuju se pomoću naredbe try. Dio koda koji može izbaciti ili pokrenuti iznimku implementiran je u blok try. Pored bloka try, implementiran je osim bloka koji obrađuje iznimku. U bloku osim hvatamo iznimku i odlučujemo koju ćemo operaciju izvršiti kad naiđemo na tu posebnu iznimku. Sintaksa pisanja pokušaja i osim blokova je sljedeća:

probati:
izvršiti operaciju ili funkciju
osim:
funkcionalnost za rukovanje iznimkom

Sada ćemo implementirati jednostavan kod u našu Python skriptu pomoću blokova try i osim.

Ovdje ćemo ispisati varijablu 'name' koja nije definirana. Ovo dovodi do iznimke u bloku osim.

#implementing pokušaj blok
probati:
Naziv ispisa)
#implementing osim bloka
osim:
print ("Dogodila se iznimka")

Izlaz

Ako se ne dogodi iznimka, izvršava se samo blok try. U bloku osim ispisuje se izjava da je došlo do iznimke.

Pogledajmo još jedan primjer gdje definiramo varijablu imena:

#definiranje varijable imena
name = "Označi"
#implementing proba blok
probati:
Naziv ispisa)
#implementing osim bloka
osim:
print ("Dogodila se iznimka")

Izlaz

U gornjem primjeru izvršava se pokušaj bloka, a preskače se blok osim jer program ne stvara nikakve iznimke. Možemo definirati onoliko koliko osim blokova u našem programu želimo. Svaki osim bloka obrađuje određenu vrstu iznimke.

#implementing proba blok
probati:
Naziv ispisa)
#implementing osim bloka za hvatanje pogreške u imenu
osim NameError:
print ("Varijabla nije definirana")
#implementing osim bloka
osim:
print ("Nešto je pošlo po zlu, osim pogreške u nazivu")

Izlaz

U Pythonu je Exception osnovna klasa za sve iznimke. Umjesto da u blok osim upisujemo ime određene iznimke, možemo jednostavno napisati „Iznimka“ i na taj način uhvatiti svaku vrstu iznimke.

#implementing proba blok
probati:
Naziv ispisa)
#implementing osim bloka za hvatanje pogreške
osim iznimke kao exp:
ispis (exp.__razred__)
#implementing osim bloka
osim:
print ("Nešto je pošlo po zlu, osim pogreške u nazivu")

Izlaz

Isk.__class__ vraća ime klase iznimke.

Slično tome, pogledajmo primjer klase "ZeroDivisionError".

#implementing proba blok
probati:
x = 1/0
ispis (x)
#implementing osim bloka za hvatanje pogreške
osim iznimke kao exp:
ispis (exp.__razred__)
#implementing osim bloka
osim:
print ("Nešto je pošlo po zlu, osim pogreške u nazivu")

Izlaz

Blok else

Blok else koristi se s pokušajima i iznimkama. Blok else definira dio koda koji se izvršava ako se blok try uspješno izvrši i ne dogodi se pogreška. Ponekad će vam trebati ispis poruke ili izvršavanje funkcije kada je blok try uspješno izveden. Iz tog razloga blok else možemo implementirati s try i osim blokovima.

U ovom primjeru implementirat ćemo blok else u našu Python skriptu.

#implementing proba blok
probati:
x = 1/2
ispis (x)
#implementing osim bloka za hvatanje pogreške
osim iznimke kao exp:
ispis (exp.__razred__)
#implementing else blok
drugo:
print ("Sve je prošlo u redu")

Izlaz

Blok else izvršava se nakon uspješnog izvršavanja bloka try.

Pogledajmo sada još jedan primjer pomoću bloka else.

#implementing proba blok
probati:
name = "Označi"
#implementing osim bloka za hvatanje pogreške
osim iznimke kao exp:
ispis (exp.__razred__)
#implementing else blok
drugo:
print ("Ime je:", ime)

Izlaz

U gornjem primjeru, varijabla imena definirana je unutar bloka try, a ispisuje se u bloku else.

Konačni blok

The konačno blok sadrži dio koda koji se mora izvršiti bez obzira na to izaziva li blok try iznimku. Konačni blok nije obavezan i deklarira se s blokom try. Na primjer, ako smo otvorili tekstualnu datoteku za čitanje bloka try i ona uzrokuje pogrešku ili iznimku, bolje je datoteku priložiti u konačno blok, čak i ako se pogreška dogodi. Primijenimo konačno blok u našu Python skriptu.

#implementing pokušaj blok
probati:
ispis (my_dict)
#implementing osim bloka za hvatanje pogreške
osim iznimke kao exp:
ispis (exp.__razred__)
#implementing konačno blok
konačno:
print ("Ovo je konačno blokiranje")
print ("Konačno se izvršava blok")

Izlaz

U izlazu se može vidjeti da blok try stvara iznimku. Međutim, konačno se blok izvršava na kraju.

Otvorimo sada tekstualnu datoteku u bloku try, što dovodi do iznimke dok je datoteka zatvorena u konačno bloku.

#implementing proba blok
probati:
fileObj = open ("student.xml "," r ")
fileObj.tražiti (-2)
ispis (datotekaObj.redovi za čitanje ())
#implementing osim bloka
osim iznimke kao exp:
ispis (exp.__razred__)
#implementing konačno blok
konačno:
fileObj.Zatvoriti()
ispis ("Datoteka je uspješno zatvorena")

Izlaz

Kao što vidite, bez obzira na pogrešku vrijednosti, datoteka je uspješno zatvorena unutar bloka konačno.

Podignite iznimku

Iako se iznimke podižu automatski kada se dogodi pogreška, u Pythonu iznimke možete podići i ručno. The podići ključna riječ koristi se za podizanje ili uklanjanje iznimke.

Sada ćemo pokrenuti neke iznimke pomoću ključne riječi rise. U sljedećem primjeru implementiran je uvjet if za provjeru negativnih brojeva. Ako postoje bilo koji negativni brojevi, tada se postavlja iznimka "Nenegativni brojevi nisu dopušteni".

#declaring dvije brojčane varijable
num1 = 20
num2 = -10
ako ((num1<0) | (num2<0)):
podići iznimku ("Nenegativni brojevi nisu dopušteni")
drugo:
ispis (num1 + num2)

Izlaz

Zaključak

Iznimka se javlja kao odgovor na pogrešku u vrijeme izvođenja. U Pythonu se možemo nositi s iznimkama pomoću blokova try i osim. Ovaj je članak kroz razne primjere objasnio kako koristiti iznimke u Pythonu.

Vodič za Shadow of the Tomb Raider za Linux
Shadow of the Tomb Raider dvanaesti je dodatak seriji Tomb Raider - franšizi u akcijsko-avanturističkoj igri koju je stvorio Eidos Montreal. I kritiča...
Kako pojačati FPS u Linuxu?
FPS je kratica Okviri u sekundi. Zadatak FPS-a je mjerenje broja sličica u reprodukcijama video zapisa ili igranim izvedbama. Jednostavnim riječima, b...
Najpopularnije laboratorijske igre Oculus App
Ako ste vlasnik slušalica Oculus, tada morate biti sigurni u bočno učitavanje. Bočno učitavanje postupak je instaliranja nehranjenog sadržaja na vaše ...