Napake so neizogibne, ko programiraš. Zato je še toliko pomembneje, da veš, kako se z njimi spopasti. V Pythonu so napake predstavljene kot izjeme, upravljanje teh izjem pa je ključno za stabilnost tvojih aplikacij. V tem priročniku se boš naučil, kako lahko učinkovito ujeti in obdelati napake z uporabo blokov try in except.
Najpomembnejše ugotovitve
- Napake v Pythonu so predstavljene z izjema.
- With try and except lahko prepoznaš in obravnavaš napake.
- Obravnava napak tvoje programe naredi bolj robustne in prijaznejše do uporabnika.
Navodila po korakih
Najprej si poglejmo praktičen primer, da bomo razumeli obvladovanje izjem. Recimo, da imaš seznam udeležencev, na primer superjunakov. Ti udeleženci so shranjeni kot elementi v seznamu.
Pri delu s seznami v Pythonu je pomembno vedeti, da se indeksi začnejo pri 0. Tako, če imaš tri elemente v svojem seznamu, so veljavni indeksi 0, 1 in 2. Dostop do indeksa zunaj tega obsega bo povzročil napako.

Zdaj se osredotočim na praktičen primer. Predpostavimo, da poskušaš dostopati do udeleženca z indeksom 5. Ker seznam vsebuje le tri elemente, bo to povzročilo napako.
Ko izvedeš ta kodo, boš ugotovil, da ne deluje. Python ti vrne sporočilo o napaki, ki pravi, da je indeks zunaj obsega.
Ta napaka se prikaže kot IndexError. Zelo je pomembno, da takšnih napak ne ignoriraš, temveč jih ujameš in ustrezno reagiraš. V mnogih aplikacijah uporabnik ne bo vedel, zakaj kaj ne deluje – zato ga je treba obvestiti o napaki.
Za obravnavo te napake lahko uporabiš try in except. To deluje tako, da svoj kritični del kode oviješ v try-blok.

V tem bloku preizkusiš kodo, ki bi lahko povzročila napako. Če koda ne deluje, kot je predvideno, se nadzor samodejno prenese na except-blok. Tu lahko uporabniku izpišeš ustrezno sporočilo o napaki.
Če izvedeš zgornjo kodo, ne boš več videl trdega sporočila o napaki. Namesto tega ti tvoj program sporoči, da je navedena številka udeleženca neveljavna.

In če želiš, da uporabnik ve, katere veljavne pozicije so na voljo, lahko tudi te informacije izpišeš. S tem bo tvoje programsko okolje še prijaznejše do uporabnika.
Ko zdaj izvedeš svojo kodo, bo uporabnik dobil jasno predstavo o tem, kaj je šlo narobe in katere možnosti ima.
Pomembno je tudi, da se zavedaš, da obstajajo tudi druge nianse v obravnavi napak, ki jih boš raziskal v prihodnosti. Glede na kompleksnost tvoje aplikacije boš morda moral obravnavati dodatne razloge za izjeme, uporabljati več except-blokov ali celo dodati finally-blok za izvajanje kode, ne glede na to, ali je prišlo do napake ali ne.
Povzetek - obravnavanje napak kot izjem v Pythonu
Naučil si se, kako v Pythonu obravnavati napake, ki so predstavljene kot izjeme. Z uporabo try in except lahko zagotoviš, da tvoja koda postane bolj robustna in da uporabnik prejme jasne povratne informacije, ko pride do napake. To ne samo da izboljša kakovost tvoje kode, ampak tudi precej izboljša uporabniško izkušnjo.
Pogosto zastavljena vprašanja
Kaj so izjeme v Pythonu?Izjeme so napake, ki se pojavijo med izvajanjem programa in jih lahko obravnavaš s posebnimi bloki, kot sta try in except.
Kako deluje blok try?Blok try ovije kodo, ki bi lahko povzročila napako. Če v bloku try pride do napake, se nadzor prenese na blok except.
Kaj je IndexError?IndexError se pojavi, ko poskušaš dostopati do elementa seznama, katerega indeks je zunaj veljavnega obsega.
Ali lahko uporabim več except-blokov?Da, lahko uporabiš več except-blokov za individualno obravnavo različnih vrst napak.
Kako lahko obvestim uporabnika o napakah?To lahko storiš s printf-stavki v bloku except, da mu poveš, kaj je šlo narobe.