Výnimka je neočakávaná udalosť, ktorá nastane počas vykonávania programu. Je tiež známy ako a chyba času chodu . Keď nastane tá chyba, Python vygeneruje počas vykonávania výnimku a dá sa s ňou zaobchádzať, čo zabráni prerušeniu vášho programu.
Príklad: V tomto kóde systém nemôže rozdeliť číslo nulou, takže je vyvolaná výnimka.
Python3
a>=> 5> b>=> 0> print>(a>/>b)> |
>
>
Výkon
Traceback (most recent call last): File '/home/8a10be6ca075391a8b174e0987a3e7f5.py', line 3, in print(a/b) ZeroDivisionError: division by zero>
Ošetrenie výnimiek pomocou try, okrem iného a nakoniec
- Skúste : Tento blok otestuje výskyt vylúčenej chyby
- Okrem : Tu môžete vyriešiť chybu
- Inak : Ak neexistuje žiadna výnimka, tento blok sa vykoná
- Konečne : Nakoniec sa blok vždy vykoná, buď sa vygeneruje výnimka alebo nie
Python Try, Except, else a Nakoniec syntax
try: # Some Code.... except: # optional block # Handling of exception (if required) else: # execute if no exception finally: # Some code .....(always executed)>
Práca s ' skús' a 'okrem'
Najprv pochopme, ako Skúste Python a okrem Tvorba
- najprv skúste vykoná sa klauzula, t.j. kód medzi skúste a okrem doložka.
- Ak nie je výnimka, tak jedine skúste doložka bude platiť, okrem doložka nebude vykonaná.
- Ak sa vyskytne nejaká výnimka, skúste doložka sa preskočí a okrem doložka bude plynúť.
- Ak sa vyskytne nejaká výnimka, ale okrem klauzula v kóde sa tým nezaoberá, prenáša sa na vonkajšie skúste Vyhlásenia. Ak výnimka zostane neošetrená, vykonávanie sa zastaví.
- A skúste výpis môže mať viac ako jeden okrem doložka.
Príklad: Skúsme zobrať celé číslo používateľa a vhodiť výnimku do bloku okrem.
Python3
armstrongovo číslo
# 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>)> |
>
>
Výkon:
Yeah ! Your answer is : 1 Sorry ! You are dividing by zero>
Zachytenie viacerých výnimiek v Pythone
Tu je príklad, ktorý ukazuje, ako používať viaceré klauzuly okrem na spracovanie rôznych výnimiek:
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}'>)> |
>
>
Výkon:
Enter a number: An error occurred: EOF when reading a line>
Ostatné klauzuly v Pythone
Kód vstupuje do bloku else iba vtedy, ak klauzula try nevyvoláva výnimku.
Príklad: Iný blok sa vykoná iba ak nenastane žiadna výnimka .
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>)> |
>
>
Výkon:
Yeah ! Your answer is : 1 Sorry ! You are dividing by zero>
Python konečne kľúčové slovo
Python poskytuje kľúčové slovo konečne , ktorý je vždy vykonaný po vyskúšaní a okrem blokov. Blok final sa vždy vykoná po normálnom ukončení bloku try alebo po ukončení bloku try kvôli nejakej výnimke. Aj keď sa vrátite do bloku okrem, blok nakoniec sa vykoná
Príklad: Skúsme vložiť výnimku okrem bloku a nakoniec vykonáme, či sa výnimka vygeneruje alebo nie
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>)> |
>
>
Výkon:
Yeah ! Your answer is : 1 This is always executed Sorry ! You are dividing by zero This is always executed>