Ett undantag är en oväntad händelse som inträffar under körningen av programmet. Det är också känt som en körtidsfel . När det felet inträffar, Pytonorm genererar ett undantag under körningen och som kan hanteras, vilket förhindrar ditt program från att avbryta.
Exempel: I den här koden kan systemet inte dela talet med noll så ett undantag höjs.
Python3
a>=> 5> b>=> 0> print>(a>/>b)> |
>
>
Produktion
Traceback (most recent call last): File '/home/8a10be6ca075391a8b174e0987a3e7f5.py', line 3, in print(a/b) ZeroDivisionError: division by zero>
Undantagshantering med try, except, else, and finally
- Prova : Detta block kommer att testa att det undantagna felet uppstår
- Bortsett från : Här kan du hantera felet
- Annan : Om det inte finns något undantag kommer detta block att exekveras
- Till sist : Slutligen exekveras alltid blocket, antingen ett undantag genereras eller inte
Python Try, Except, else och Slutligen Syntax
try: # Some Code.... except: # optional block # Handling of exception (if required) else: # execute if no exception finally: # Some code .....(always executed)>
Arbete med ' Prova' och 'bortsett från'
Låt oss först förstå hur Python försök och utom Arbetar
- Först Prova klausul exekveras, dvs koden mellan Prova och bortsett från klausul.
- Om det inte finns något undantag, då bara Prova klausul kommer att köras, bortsett från klausul kommer inte att verkställas.
- Om något undantag inträffar, Prova klausul kommer att hoppas över och bortsett från klausul kommer att köras.
- Om något undantag inträffar, men bortsett från klausul i koden hanterar det inte, den skickas vidare till det yttre Prova uttalanden. Om undantaget inte hanteras stoppas exekveringen.
- A Prova uttalande kan ha mer än ett bortsett från klausul.
Exempel: Låt oss försöka ta användarens heltalsinmatning och kasta undantaget i except block.
Python3
java punkt
# 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>)> |
>
>
Produktion:
Yeah ! Your answer is : 1 Sorry ! You are dividing by zero>
Fånga flera undantag i Python
Här är ett exempel som visar hur man använder flera undantagssatser för att hantera olika undantag:
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}'>)> |
>
>
Produktion:
Enter a number: An error occurred: EOF when reading a line>
Andra klausuler i Python
Koden går in i else-blocket endast om try-satsen inte ger upphov till ett undantag.
Exempel: Annars kommer blocket att köras endast när inget undantag förekommer .
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>)> |
>
>
Produktion:
Yeah ! Your answer is : 1 Sorry ! You are dividing by zero>
Python äntligen Nyckelord
Python tillhandahåller ett nyckelord till sist , vilket är alltid avrättad efter försök och utom block. Finalblocket körs alltid efter normal avslutning av försöksblocket eller efter att försöksblocket avslutats på grund av något undantag. Även om du återvänder i undantagsblocket kommer det slutgiltiga blocket att köras
Exempel: Låt oss försöka kasta undantaget i utom block och Slutligen kommer att exekvera antingen undantag kommer att generera eller inte
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>)> |
>
>
Produktion:
Yeah ! Your answer is : 1 This is always executed Sorry ! You are dividing by zero This is always executed>