Napake v Pythonu so lahko dveh vrst, tj. Sintaksne napake in Izjeme. Napake so težave v programu, zaradi katerih bo program ustavil izvajanje. Po drugi strani pa se pojavijo izjeme, ko pride do nekaterih notranjih dogodkov, ki spremenijo običajni potek programa.
Opomba: Za več informacij glejte Napake in izjeme v Pythonu
Nekatere pogoste izjeme so:
- IOError: če datoteke ni mogoče odpreti KeyboardInterrupt: ko uporabnik pritisne nepotrebno tipko ValueError: ko vgrajena funkcija prejme napačen argument EOFError: če je zadet End-Of-File brez branja podatkov ImportError: če ne more najti modula
Poskusite razen v Pythonu
Stavek Try and Except se uporablja za obravnavanje teh napak znotraj naše kode v Pythonu. Blok poskusa se uporablja za preverjanje napak v neki kodi, tj. koda v bloku poskusa se bo izvedla, ko v programu ni napake. Medtem ko se bo koda znotraj bloka razen izvedla vsakič, ko program naleti na kakšno napako v predhodnem poskusnem bloku.
Sintaksa:
try: # Some Code except: # Executed if error in the # try block>
Kako deluje try()?
- Prvič, poskusi klavzula se izvede, tj. koda med poskusi.
- Če ni izjeme, potem samo poskusi klavzula se bo izvajala, razen klavzula je končana.
- Č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
Koda 1: Nobena izjema, torej poskusi klavzula bo delovala.
Python3
zimsko narečje
# 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>)> |
>
>
Pomožni prostor: O(1)
Izhod:
Yeah ! Your answer is : 1>
Koda 1: Obstaja le izjema razen klavzula bo delovala.
Python3
# 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>,>0>)> |
>
>
Izhod:
Sorry ! You are dividing by zero>
Koda 2: Drugi način pisanja razen stavek, je prikazan spodaj in na ta način sprejema samo izjeme, ki jih morate ujeti, ali pa lahko preverite, do katere napake prihaja.
Python3
# code> def> divide(x, y):> >try>:> ># Floor Division : Gives only Fractional Part as Answer> >result>=> x>/>/> y> >print>(>'Yeah ! Your answer is :'>, result)> >except> Exception as e:> ># By this way we can know about the type of error occurring> >print>(>'The error is: '>,e)> > divide(>3>,>'GFG'>)> divide(>3>,>0>)> |
>
>
Izhod:
The error is: unsupported operand type(s) for //: 'int' and 'str' The error is: integer division or modulo by zero>
Drugačna klavzula
V Pythonu lahko uporabite tudi klavzulo else v bloku try-except, ki mora biti prisoten za vsemi klavzulami razen. Koda vstopi v blok else samo, če stavek try ne sproži izjeme.
Sintaksa:
try: # Some Code except: # Executed if error in the # try block else: # execute if no exception>
Koda:
Python3
# Program to depict else clause with try-except> > # Function which returns a/b> def> AbyB(a , b):> >try>:> >c>=> ((a>+>b)>/>/> (a>->b))> >except> ZeroDivisionError:> >print> (>'a/b result in 0'>)> >else>:> >print> (c)> > # Driver program to test above function> AbyB(>2.0>,>3.0>)> AbyB(>3.0>,>3.0>)> |
>
>
Izhod:
-5.0 a/b result in 0>
Končno ključna beseda v Pythonu
Python ponuja ključno besedo finally, ki se vedno izvede po blokih poskusa in razen. Končni blok se vedno izvede po običajni prekinitvi poskusnega bloka ali po zaključku poskusnega bloka zaradi nekaterih izjem.
Sintaksa:
try: # Some Code except: # Executed if error in the # try block else: # execute if no exception finally: # Some code .....(always executed)>
Koda:
Python3
# Python program to demonstrate finally> > # No exception Exception raised in try block> try>:> >k>=> 5>/>/>0> # raises divide by zero exception.> >print>(k)> > # handles zerodivision exception> except> ZeroDivisionError:> >print>(>'Can't divide by zero'>)> > finally>:> ># this block is always executed> ># regardless of exception generation.> >print>(>'This is always executed'>)> |
>
>
Izhod:
Can't divide by zero This is always executed>
Povezani članki:
- Izhodna vprašanja
- Obravnava izjem v Pythonu
- Uporabniško določene izjeme