Zkuste, kromě, jinak a nakonec v Pythonu

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




# 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