Rukovanje iznimkama je vaša sposobnost prilagodbe i prikazivanja poruka o pogreškama za dijelove vašeg programa koji ne rade.

Bez obzira gradite li web stranicu, izrađujete li API, modul ili bilo koji drugi proizvod pomoću Pythona, vaša sposobnost učinkovitog rukovanja iznimkama omogućuje vam izričito navođenje uzroka pogreške.

Ovdje ćemo pogledati kako se možete nositi s iznimkama u Pythonu.

Kako rukovanje iznimkama funkcionira u Pythonu

Kad povećate iznimke, govorite Pythonu da prikaže poruku kad god blok koda zakaže. Rukovanje iznimkama je poput kazivanja nekome da pokuša dignuti teg. A ako ne mogu, trebali bi vas obavijestiti.

Međutim, da biste pokrenuli iznimku u Pythonu, reći ćete Pythonu da pokuša pokrenuti određeni blok koda. Ako taj blok ne uspije, možete zatražiti od Pythona da podigne definiranu iznimku za neuspjeli kôd.

Kada biste trebali koristiti iznimke u programiranju na Pythonu?

U većini prilika možete maskirati standardne Python pogreške koristeći iznimke. Ali morate biti oprezni, jer to može uzrokovati probleme s otklanjanjem pogrešaka. Slijedom toga, možda će vam biti teško otkriti osnovni uzrok moguće greške.

instagram viewer

Stoga biste trebali koristiti iznimke kada ste dovoljno testirali svoj kôd i sigurni ste da radi. U konačnici, najbolja je praksa koristiti ih za rješavanje potencijalnih kvarova koji mogu nastati na korisnikovom kraju, a ne na samom kodu.

Drugim riječima, iznimke možete koristiti kao alat upozorenja koji će korisnike voditi o načinu korištenja vašeg programa.

Rukovanje Python iznimkama

Da biste obradili iznimke u Pythonu, prvo morate umotati svoj kod u probaj... osim blok. Povremeno ćete možda trebati uključiti a konačno izjava za daljnje radnje, ovisno o vašim potrebama.

Koncept kodiranja izuzetaka Pythona općenito izgleda ovako:

probati:
"kôd koji treba izvršiti"
osim:
"poruka pogreške"

Kao što je ranije spomenuto, također možete koristiti konačno u bloku iznimke. Ali kod koji napišete unutar a konačno klauzula je neovisna i izvršava postoji li iznimka ili ne.

U osnovi, dobro dođe ako imate još jedan blok koda koji želite kontinuirano izvoditi bez obzira na to što se događa u probaj... osim blok.

Evo primjera:

probati:
ispis (9 + 6)
osim:
ispis ("poruka o pogrešci")
konačno:
ispis ("ponovo pokrenite")
Izlaz:
15
molim vas ponovo pokrenite

U gornjem kodu, molim vas ponovo pokrenite radi kontinuirano, bez obzira postoji li iznimka ili ne.

An drugo stanje također može slijediti osim izjava:

probati:
C = 2 + B
osim:
ispis ("B treba definirati")
drugo:
print (u "Uspješno dodano! Rezultat je% s "% (C))
Izlaz: B treba definirati

Pokušajte ponovo s definiranim "B":

probati:
B = 5
C = 2 + B
osim:
ispis ("B treba definirati")
drugo:
print (u "Uspješno dodano! Rezultat je% s "% (C))
Izlaz: Uspješno dodano! Rezultat je 7

Gornji primjeri su nestandardizirane iznimke. Ali možete imati izričitiju iznimku kada kombinirate ugrađene (definirane) iznimke s nestandardiziranim:

probati:
C = 2 + B
osim NameError kao greška:
ispis (pogreška, ":", "B treba definirati, molim")
drugo:
print (u "Uspješno dodano! Rezultat je% s "% (C))
Izlaz: naziv 'B' nije definiran: Molimo treba definirati B

Gornja iznimka prvo provjerava postoji li NameError u probati blok. Zatim se ispisuje standard NameError prvo iznimka ("naziv 'B' nije definiran"). I podržava je uz vašu pisanu iznimku ("B treba definirati, molim").

Povezano: Osnovni principi programiranja koji svaki programer mora znati

A ako želite riješiti niz iznimaka, također možete pratiti znak probati blok s mnogima osim izjave. Ovo je prilično zgodno ako je vaš probati blok može imati mnogo iznimaka:

probati:
B = 5
C = 2 + B
D = plovak (6)
F = 7/0
osim NameError kao greška:
ispis (pogreška, ":", "B treba definirati, molim")
osim ValueError kao val:
print (val, ":", "Te podatke ne možete pretvoriti")
osim ZeroDivisionError kao zeroerr:
ispis (zeroerr, ":", "Broj ne možete podijeliti s nulom")
drugo:
print (u "Operacija uspješna! Rezultati su:% s,% s i% s "% (C, D, F))
Izlaz: podjela s nulom: broj ne možete podijeliti s nulom

Što ako je podjela valjana? Na primjer, zamjena F = 7/0 u gornjem kodu s F = 7/5 daje:

Izlaz: Operacija uspješna! Rezultati su: 7, 6,0 i 1,4

Korisnički definirane iznimke u Pythonu

Možete iznijeti i svoju iznimku i pozvati ih kasnije u svom programu. To vam omogućuje da date specifičan opis svoje iznimke i imenujete je kako želite.

Ipak, svaka korisnički definirana iznimka (izravno ili neizravno) i dalje dolazi iz ugrađenog Iznimka klasa Pythona.

Primjer koda u nastavku upućuje na bazu Iznimka izravno pozivom RuntimeError iz toga:

klasa connectionError (RuntimeError):
def __init __ (self, value):
self.value = vrijednost
probati:
podići vezuError ("Loše ime hosta")
osim connectionError kao greška:
ispis (vrijednost pogreške)
Izlaz: Loše ime domaćina

Imajte na umu da greška u povezivanju, u ovom je slučaju korisnički definirana klasa koju možete podići kad god vam zatreba u vašem programu.

Povezano: Vodič za početnike za regularne izraze s Pythonom

Možete napraviti korisnički definiranu iznimku izvodeći je izravno iz Iznimka osnovna klasa. Izuzetak u nastavku, međutim, sprječava oduzimanje 5 od 6 i izravno poziva iznimku iz osnovne klase:

pogreške klase (iznimka):
proći
klasa sixFiveError (pogreške):
def __init __ (self, vrijednost, poruka):
self.value = vrijednost
samo.poruka = ​​poruka
probati:
podići sixFiveError (6-5, "Ovo oduzimanje nije dopušteno")
osim sixFiveError kao e:
print ("Došlo je do pogreške:", npr. poruka)
Izlaz: Došlo je do pogreške: Ovo oduzimanje nije dopušteno

U praksi možete koristiti iznimku koju ste prethodno definirali pozivom u drugoj funkciji. Na primjer, možete stvoriti floatError to dopušta samo dodavanje dva plovka:

# Prvo pozovite osnovne klase izuzetaka:
pogreške klase (iznimka):
proći
# Dalje izvedite vlastiti izuzetak iz osnovne klase:
klasa FloatError (pogreške):
def __init __ (self, vrijednost, poruka):
self.value = vrijednost
samo.poruka = ​​poruka
# Stvorite funkciju za dodavanje dva plovka:
def addTwoFloat (a, b):
if (type (a) i type (b))! = float:
podići FloatError (a + b, "Brojevi moraju biti plutajući za dodavanje")
drugo:
ispis (a + b)
addTwoFloat (4, 7)
Izlaz: __main __. FloatError: (11, 'Brojevi moraju biti plutajući za dodavanje')

Jer ste sada definirali a FloatError klase, Python ga podiže ako pokušate dodati dva ne-float literala koristeći addtwoFloat funkcija.

Možete ispisati FloatError klase u istoj datoteci Python u kojoj ste je kreirali da biste vidjeli što se događa:

ispis (FloatError)
Izlaz:

FloatErrormeđutim, nije ugrađena Python iznimka. To možete provjeriti pozivom FloatError u drugoj svježoj Python datoteci u kojoj niste kreirali ovu klasu:

ispis (FloatError)
Izlaz: NameError: ime 'FloatError' nije definirano

Dobivate NameError jer ga Python ne prepoznaje kao standardnu ​​iznimku.

Možete pokušati definirati i druge klase pogrešaka kako biste vidjeli kako se igraju.

Učinite svoje Python programe jednostavnijim za upotrebu, s iznimkama

U Pythonu postoje mnoge standardne iznimke. Ali možete definirati i svoje. Bez obzira na to, jednostavnost korištenja vašeg programa donekle ovisi o načinu na koji obrađuje razne iznimke (bilo da je to korisnički definirana, nespecifična ili standardna).

Iznimke vam omogućavaju da odredite kako vaš program treba raditi kada korisnici komuniciraju s njima. Jasno i jezgrovito navođenje uzroka pogreške korisnicima također daje do znanja o tome što čine pogrešno, a ponekad ih usmjerava u pravom smjeru.

E-mail
Kako ispraviti svoj Python kod

Opremite se znanjem kako zgnječiti svaku Python bug na vašem putu.

Pročitajte Dalje

Povezane teme
  • Programiranje
  • Piton
  • Vodiči za kodiranje
O autoru
Idowu Omisola (Objavljeno 82 članka)

Idowu je strastven prema bilo čemu pametnom techu i produktivnosti. U slobodno vrijeme igra se s kodiranjem i prebacuje se na šahovsku ploču kad mu je dosadno, ali također voli kad-tad odvojiti se od rutine. Njegova strast da ljudima pokaže put oko moderne tehnologije motivira ga da piše više.

Više od Idowu Omisole

Pretplatite se na naše obavijesti

Pridružite se našem biltenu za tehničke savjete, recenzije, besplatne e-knjige i ekskluzivne ponude!

Još jedan korak…!

Potvrdite svoju e-adresu u e-pošti koju smo vam upravo poslali.

.