Izjema je nepričakovan dogodek, ki se zgodi med izvajanjem programa. Znan je tudi kot a napaka med izvajanjem . Ko pride do te napake, Python ustvari izjemo med izvajanjem in jo je mogoče obravnavati, kar prepreči prekinitev vašega programa.
primer: V tej kodi sistem ne more deliti števila z ničlo, zato se sproži izjema.
Python3
a>=> 5> b>=> 0> print>(a>/>b)> |
>
>
Izhod
Traceback (most recent call last): File '/home/8a10be6ca075391a8b174e0987a3e7f5.py', line 3, in print(a/b) ZeroDivisionError: division by zero>
Obravnava izjem s poskusi, razen, sicer in končno
- poskusite : Ta blok bo preizkusil pojav izvzete napake
- Razen : Tukaj lahko odpravite napako
- drugače : Če ni nobene izjeme, bo ta blok izveden
- Končno : Končni blok se vedno izvede ne glede na to, ali je ustvarjena izjema ali ne
Python Try, Except, else in Finally Syntax
try: # Some Code.... except: # optional block # Handling of exception (if required) else: # execute if no exception finally: # Some code .....(always executed)>
Delovanje ' poskusi' in 'razen'
Najprej razumemo, kako Python poskusi in razen dela
- najprej poskusi klavzula se izvede, tj. koda med poskusi in razen klavzula.
- Če ni izjeme, potem samo poskusi klavzula se bo izvajala, razen klavzula ne bo izvršena.
- Če pride do kakršne koli izjeme, poskusi klavzula bo preskočena in razen klavzula bo delovala.
- Če pride do kakšne izjeme, vendar razen klavzula znotraj kode tega ne obravnava, se posreduje zunanjemu poskusi izjave. Če izjema ostane neobdelana, se izvajanje ustavi.
- A poskusi izjava ima lahko več kot eno razen klavzula.
primer: Poskusimo uporabiti celoštevilski vnos uporabnika in vrzimo izjemo v blok razen.
Python3
c kodno polje nizov
# Python code to illustrate working of try()> def> divide(x, y):> >try>:> ># Floor Division : Gives only Fractional> ># Part as Answer> >result>=> x>/>/> y> >print>(>'Yeah ! Your answer is :'>, result)> >except> ZeroDivisionError:> >print>(>'Sorry ! You are dividing by zero '>)> > # Look at parameters and note the working of Program> divide(>3>,>2>)> divide(>3>,>0>)> |
>
>
Izhod:
Yeah ! Your answer is : 1 Sorry ! You are dividing by zero>
Ujemi več izjem v Pythonu
Tukaj je primer, ki prikazuje, kako uporabiti več klavzul razen za obravnavanje različnih izjem:
Python3
try>:> >x>=> int>(>input>(>'Enter a number: '>))> >result>=> 10> /> x> except> ZeroDivisionError:> >print>(>'You cannot divide by zero.'>)> except> ValueError:> >print>(>'Invalid input. Please enter a valid number.'>)> except> Exception as e:> >print>(f>'An error occurred: {e}'>)> |
>
>
Izhod:
Enter a number: An error occurred: EOF when reading a line>
Druge klavzule v Pythonu
Koda vstopi v blok else samo, če stavek try ne sproži izjeme.
primer: Izvede se drugačen blok le, če ni nobene izjeme .
Python3
# Python code to illustrate working of try()> def> divide(x, y):> >try>:> ># Floor Division : Gives only Fractional> ># Part as Answer> >result>=> x>/>/> y> >except> ZeroDivisionError:> >print>(>'Sorry ! You are dividing by zero '>)> >else>:> >print>(>'Yeah ! Your answer is :'>, result)> > # Look at parameters and note the working of Program> divide(>3>,>2>)> divide(>3>,>0>)> |
>
>
Izhod:
Yeah ! Your answer is : 1 Sorry ! You are dividing by zero>
Python končno Ključna beseda
Python ponuja ključno besedo končno , kateri je vedno izvršena po poskusu in razen blokih. Blok finally se vedno izvede po običajni prekinitvi poskusnega bloka ali po zaključku poskusnega bloka zaradi neke izjeme. Tudi če se vrnete v blok razen, se bo še vedno izvedel blok finally
primer: Poskusimo vreči izjemo v blok razen in končno bo izvedel, ali se bo izjema ustvarila ali ne
Python3
# Python code to illustrate> # working of try()> def> divide(x, y):> >try>:> ># Floor Division : Gives only Fractional> ># Part as Answer> >result>=> x>/>/> y> >except> ZeroDivisionError:> >print>(>'Sorry ! You are dividing by zero '>)> >else>:> >print>(>'Yeah ! Your answer is :'>, result)> >finally>:> ># this block is always executed> ># regardless of exception generation.> >print>(>'This is always executed'>)> # Look at parameters and note the working of Program> divide(>3>,>2>)> divide(>3>,>0>)> |
>
>
Izhod:
Yeah ! Your answer is : 1 This is always executed Sorry ! You are dividing by zero This is always executed>