Python Zkuste kromě
Chyba v Pythonu může být dvou typů, tj. chyby syntaxe a výjimky. Chyby jsou problémy v programu, kvůli kterým program zastaví provádění. Na druhou stranu jsou výjimky vyvolány, když nastanou nějaké vnitřní události, které změní normální tok programu.
Poznámka: Další informace najdete v tématu Chyby a výjimky v Pythonu
Některé z běžných chyb výjimek jsou:
- IOError: pokud soubor nelze otevřít KeyboardInterrupt: když uživatel stiskne nevyžadovanou klávesu ValueError: když vestavěná funkce obdrží nesprávný argument EOFError: pokud je zasažen End-Of-File bez načtení jakýchkoli dat ImportError: pokud nemůže najít modul
Zkuste kromě v Pythonu
Příkaz Try and Except se používá ke zpracování těchto chyb v našem kódu v Pythonu. Blok try se používá ke kontrole chyb v nějakém kódu, tj. kód uvnitř bloku try se spustí, když v programu není žádná chyba. Zatímco kód uvnitř bloku výjimkou se spustí vždy, když program narazí na nějakou chybu v předchozím bloku try.
Syntax:
try: # Some Code except: # Executed if error in the # try block
Jak funguje try()?
- Za prvé, Snaž se je provedena klauzule, tj. kód mezi Snaž se.
- Pokud neexistuje žádná výjimka, pak pouze Snaž se klauzule poběží, až na doložka je hotová.
- Pokud dojde k nějaké výjimce, 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šímu 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
Kód 1: Žádná výjimka, takže Snaž se doložka poběží.
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> )> |
Pomocný prostor: O(1)
Výstup :
Yeah ! Your answer is : 1
Kód 1: Existuje pouze výjimka až na doložka poběží.
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> )> |
Výstup :
Sorry ! You are dividing by zero
Kód 2: Jiný způsob psaní až na příkaz, je zobrazen níže a tímto způsobem přijímá pouze výjimky, které máte zachytit, nebo můžete zkontrolovat, která chyba se vyskytuje.
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> )> |
Výstup:
The error is: unsupported operand type(s) for //: 'int' and 'str' The error is: integer division or modulo by zero
Jinak klauzule
V Pythonu můžete také použít klauzuli else v bloku try-except, který musí být přítomen za všemi klauzulemi kromě. Kód vstoupí do bloku else pouze v případě, že klauzule try nevyvolá výjimku.
Syntax:
try: # Some Code except: # Executed if error in the # try block else: # execute if no exception
Kód:
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> )> |
Výstup:
-5.0 a/b result in 0
Konečně klíčové slovo v Pythonu
Python poskytuje klíčové slovo nakonec, které se vždy spustí po pokusu a kromě bloků. Poslední blok se vždy provede po normálním ukončení bloku try nebo po ukončení bloku try kvůli některým výjimkám.
Syntax:
try: # Some Code except: # Executed if error in the # try block else: # execute if no exception finally: # Some code .....(always executed)
Kód:
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'> )> |
Výstup:
Can't divide by zero This is always executed
Související články:
- Výstupní otázky
- Zpracování výjimek v Pythonu
- Uživatelsky definované výjimky