Izjema je nepričakovan dogodek, ki se zgodi med izvajanjem programa. Znana je tudi kot napaka med izvajanjem. Ko pride do te napake, Python ustvari izjemo med izvajanjem in to je mogoče obravnavati, kar prepreči prekinitev vašega programa. V tem članku se bomo osredotočili na 'Kako lahko natisnemo izjemo v Pythonu?'
Kaj je izjema v Pythonu?
noter Python , Izjema je vrsta napake v programu. Napaka se imenuje 'izjema', ko je program sintaktično pravilen, vendar pride do napake med njegovim izvajanjem.
Primer : V primeru poskušamo število deliti z nič, tako da povzroči napako med izvajanjem.
Python3
num1>=> 5> num2>=> 0> print>(num1>/> num2)> |
>
>
Izhod
Traceback (most recent call last): File 'Solution.py', line 5, in print(num1 / num2) ZeroDivisionError : division by zero>
Ta program je sintaktično pravilen . Edina težava tukaj je zaradi številk, ki se uporabljajo za operacijo. Ker nobenega števila ne moremo deliti z 0, vrže napako. To je torej primer 'izjeme'.
niz v znak
Kako izgledajo izjeme?
V zgornjem programu, ko smo ga izvedli, smo dobili izjemo. Napaka, ki je bila vržena, je pokazala vrstico, v kateri je prišlo do napake, natančno vrstico in vrsto napake.
Vrsta napake, ki je bila prikazana, se imenuje 'Izjema'. Preko Izjem izvemo za nastalo težavo. Izjema v zgornjem programu je ZeroDivisionError: deljenje z ničlo .
Primer : Tukaj dodelitev spremenljivke var1 opravi an nedefinirana spremenljivka , var2.
Python3
var1>=> var2> |
>
>
Izhod
Traceback (most recent call last): File 'Solution.py', line 2, in var1 = var2 NameError: name 'var2' is not defined>
Zgoraj lahko vidimo izjemo kot NameError: ime 'var2' ni definirano .
Obravnava izjem v Pythonu
Izjeme so lahko včasih zelo moteče. Tukaj nastopi koncept ravnanja z izjemami. Z ravnanjem z izjemami lahko preprosto obravnavamo izjeme za uporabnika, namesto da bi uporabniku samo pošiljali napake.
Primer: V tem programu se vnos sprejme v obliki 'int'. Toda če vanj vnesemo znak, bo vrglo 'ValueError'. To lahko uporabnika velikokrat zmede. Tukaj izvajamo obravnavo izjem. Namesto da bi prikazali napako vrednosti in zmedli uporabnika, bomo prikazali izjavo, ki uporabniku predlaga, naj poskusi znova, in uporabniku bomo dali možnost, da znova poskusi vnesti številke.
Python3
num1>=> int>(>input>(>'Enter num1: '>))> num2>=> int>(>input>(>'Enter num2: '>))> answer>=> f>'{num1} / {num2} = {num1 / num2}'> print>(answer)> |
>
>
Izhod
Enter num1: 1 Enter num2: b Traceback (most recent call last): File 'D:/PycharmProjects/pythonProject2/main.py', line 15, in num2 = int(input('Enter num2: ')) ValueError: invalid literal for int() with base 10: 'b'> Uporaba poskusi, razen in drugače
V tej kodi se izvaja zanka while, ker želimo uporabniku dovoliti, da poskusi, dokler vnos ni podan na pravilen način. Uporabili smo klavzulo 'try'. Klavzula poskusi preveri napake v vrsticah v tem členu.
Če naleti na izjemo, skoči na klavzulo »razen« in natisne sporočilo o napaki, ki smo ga posredovali. Napisali smo dva stavka razen, enega z ValueError in drugega z ZeroDivisionError. Vsaka od teh klavzul obravnava ustrezne izjeme in natisne ustrezna sporočila.
css meja
Nato smo nazadnje zapisali klavzulo else. Če ne pride do napake, se izvede blok else. V bloku else izpišemo količnik deljenja in izstopimo iz zanke.
Python3
while> True>:> >try>:> >num1>=> int>(>input>(>'Enter num1: '>))> >num2>=> int>(>input>(>'Enter num2: '>))> >answer>=> f>'{num1} / {num2} = {num1 / num2}'> >except> ValueError as e:> >print>(>'Try putting an integer value.
Error Occured:'>, e)> >except> ZeroDivisionError as ex:> >print>(>'Division by zero is invalid!
Error Occured:'>, ex)> >else>:> >print>(answer)> >break> |
>
>
Izhod:

Izjeme pri tiskanju
Zdaj, ko smo videli, kaj točno so izjeme, kako izgledajo in kako z njimi ravnati, si bomo zdaj ogledali njihovo tiskanje.
Za tiskanje izjem uporabljamo 'kot' ključna beseda Python.
Uporabili smo enak primer, kot smo ga uporabili prej. Uporabili smo ključno besedo 'as' in razglasili spremenljivko 've' za 'ValueError' in 'zde' za 'ZeroDivisionError'. Če nato naletimo na izjeme, smo napisali kodo za tiskanje te izjeme. Vendar še vedno ne moremo videti vrste izjeme, ki smo jo dobili.
Python3
niz kot niz
while> True>:> >try>:> >num1>=> int>(>input>(>'Enter num1: '>))> >num2>=> int>(>input>(>'Enter num2: '>))> >answer>=> f>'{num1} / {num2} = {num1 / num2}'> >except> ValueError as ve:> >print>(ve)> >except> ZeroDivisionError as zde:> >print>(zde)> >else>:> >print>(answer)> >break> |
>
>
Izhod:
Enter num1: a invalid literal for int() with base 10: 'a' Enter num1: 0 Enter num2: 0 division by zero Enter num1: 16 Enter num2: 4 16 / 4 = 4.0>
Vrsta izjeme tiskanja
Za ogled vrste izjeme lahko uporabimo funkcijo type().
Tukaj smo uporabili funkcijo type(), da bi vedeli, na kakšno vrsto izjeme smo naleteli med izvajanjem kode.
Python3
while> True>:> >try>:> >num1>=> int>(>input>(>'Enter num1: '>))> >num2>=> int>(>input>(>'Enter num2: '>))> >answer>=> f>'{num1} / {num2} = {num1 / num2}'> >except> ValueError as ve:> >print>(>type>(ve), ve)> >except> ZeroDivisionError as zde:> >print>(>type>(zde), zde)> >else>:> >print>(answer)> >break> |
>
>
Izhod
Enter num1: a invalid literal for int() with base 10: 'a' Enter num1: 1 Enter num2: 0 division by zero Enter num1: 4 Enter num2: 2 4 / 2 = 2.0>