Výjimka je neočekávaná událost, která nastane během provádění programu. Je také známý jako a chyba doby běhu . Když k té chybě dojde, Krajta generuje během provádění výjimku, kterou lze ošetřit, což zabrání přerušení vašeho programu.
Příklad: V tomto kódu systém nemůže dělit číslo nulou, takže je vyvolána výjimka.
Python3
a>=> 5> b>=> 0> print>(a>/>b)> |
>
>
Výstup
Traceback (most recent call last): File '/home/8a10be6ca075391a8b174e0987a3e7f5.py', line 3, in print(a/b) ZeroDivisionError: division by zero>
Ošetření výjimek pomocí try, kromě, else a nakonec
- Snaž se : Tento blok otestuje výskyt vyjmuté chyby
- Až na : Zde můžete vyřešit chybu
- Jiný : Pokud neexistuje žádná výjimka, bude tento blok proveden
- Konečně : Nakonec se blok vždy provede, buď je vygenerována výjimka, nebo ne
Syntaxe Python Try, Except, else a Konečně
try: # Some Code.... except: # optional block # Handling of exception (if required) else: # execute if no exception finally: # Some code .....(always executed)>
Práce z ‚ Snaž se' a 'až na'
Nejprve si ujasněme, jak Python zkuste a kromě funguje
- První Snaž se je provedena klauzule, tj. kód mezi Snaž se a až na doložka.
- Pokud neexistuje žádná výjimka, pak jedině Snaž se klauzule poběží, až na doložka nebude provedena.
- Pokud nastane nějaká výjimka, Snaž se doložka bude přeskočena a až na doložka poběží.
- Pokud dojde k nějaké výjimce, ale až na klauzule v kódu to nezpracovává, je předána vnější Snaž se prohlášení. Pokud výjimka zůstane neošetřená, provádění se zastaví.
- A Snaž se výpis může mít více než jeden až na doložka.
Příklad: Zkusme vzít uživatelský celočíselný vstup a vyvolat výjimku v bloku kromě.
Python3
Jak najdu skryté aplikace na Androidu
# 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ýstup:
Yeah ! Your answer is : 1 Sorry ! You are dividing by zero>
Chytit více výjimek v Pythonu
Zde je příklad, který ukazuje, jak používat více klauzulí kromě ke zpracování různých výjimek:
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ýstup:
Enter a number: An error occurred: EOF when reading a line>
Jiné klauzule v Pythonu
Kód vstoupí do bloku else pouze v případě, že klauzule try nevyvolá výjimku.
Příklad: Provede se jiný blok jen když nenastane žádná výjimka .
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ýstup:
Yeah ! Your answer is : 1 Sorry ! You are dividing by zero>
Python konečně klíčové slovo
Python poskytuje klíčové slovo Konečně , který je vždy proveden po vyzkoušení a kromě bloků. Blok final se vždy provede po normálním ukončení bloku try nebo po ukončení bloku try kvůli nějaké výjimce. I když se vrátíte v bloku kromě, blok nakonec se provede
Příklad: Zkusme hodit výjimku do bloku s výjimkou a nakonec provedeme buď vygenerovanou výjimku, nebo 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>)> |
>
>
Výstup:
Yeah ! Your answer is : 1 This is always executed Sorry ! You are dividing by zero This is always executed>