Výjimka je neočekávaná událost, která nastane během provádění programu. Je také známá jako chyba doby běhu. Když k této chybě dojde, Python během provádění vygeneruje výjimku, kterou lze zpracovat, což zabrání přerušení vašeho programu. V tomto článku se zaměříme na ‚Jak můžeme vytisknout výjimku v Pythonu?‘
Co je výjimka v Pythonu?
v Krajta , Výjimka je typ chyby v programu. Chyba se nazývá „Výjimka“, když je program syntakticky správný, ale při jeho provádění dojde k chybě.
Příklad : V příkladu se pokoušíme vydělit číslo nulou, takže to způsobí chybu běhu.
Python3
num1>=> 5> num2>=> 0> print>(num1>/> num2)> |
>
>
Výstup
Traceback (most recent call last): File 'Solution.py', line 5, in print(num1 / num2) ZeroDivisionError : division by zero>
Tento program je syntakticky správný . Jediný problém je zde kvůli číslům, která se pro operaci používají. Protože nemůžeme žádné číslo dělit 0, vyvolá chybu. Toto je tedy příklad ‚výjimky‘.
Jak vypadají výjimky?
Ve výše uvedeném programu jsme při jeho spuštění dostali výjimku. Chyba, která byla vyvolána, ukazovala řádek, na kterém k chybě došlo, přesný řádek a typ chyby.
Zobrazený typ chyby se nazývá „Výjimka“. Prostřednictvím výjimek se dozvídáme o problému, který nastal. Výjimkou ve výše uvedeném programu je ZeroDivisionError: dělení nulou .
Příklad : Zde je přiřazení proměnné var1 provedeno pomocí an nedefinovaná proměnná , var2.
Python3
var1>=> var2> |
vložit vodoznak do wordu
>
>
Výstup
Traceback (most recent call last): File 'Solution.py', line 2, in var1 = var2 NameError: name 'var2' is not defined>
Nahoře můžeme vidět Výjimku jako NameError: název 'var2' není definován .
Zpracování výjimek v Pythonu
Výjimky mohou být někdy velmi nepříjemné. Zde přichází na scénu koncept zpracování výjimek. Prostřednictvím zpracování výjimek můžeme snadno zpracovat výjimky pro uživatele namísto pouhého házení chyb na uživatele.
Příklad: V tomto programu se zadává typ ‚int‘. Pokud do něj ale zadáme znak, vyhodí ‚ValueError‘. To může uživatele mnohokrát zmást. Zde provádíme Zpracování výjimek. Namísto vyvolání chyby hodnoty a zmatení uživatele zobrazíme prohlášení s návrhem, aby to uživatel zkusil znovu, a dáme uživateli možnost zkusit zadat čísla znovu.
Python3
num1>=> int>(>input>(>'Enter num1: '>))> num2>=> int>(>input>(>'Enter num2: '>))> answer>=> f>'{num1} / {num2} = {num1 / num2}'> print>(answer)> |
>
>
Výstup
Enter num1: 1 Enter num2: b Traceback (most recent call last): File 'D:/PycharmProjects/pythonProject2/main.py', line 15, in num2 = int(input('Enter num2: ')) ValueError: invalid literal for int() with base 10: 'b'> Pomocí try, kromě a jinde
V tomto kódu je smyčka while spuštěna, protože chceme nechat uživatele, aby to zkusil, dokud není vstup zadán správným způsobem. Použili jsme klauzuli „try“. Klauzule try kontroluje chyby v řádcích v této klauzuli.
Pokud dojde k výjimce, přeskočí se na klauzuli „kromě“ a vytiskne se námi poskytnutá chybová zpráva. Napsali jsme dvě kromě klauzulí, jednu s ValueError a druhou s ZeroDivisionError. Každá z těchto klauzulí se zabývá příslušnými výjimkami a tiskne příslušné zprávy.
Nakonec jsme napsali klauzuli else. Pokud nedojde k žádné chybě, provede se blok else. V bloku else vytiskneme podíl dělení a vylomíme se ze smyčky.
Python3
while> True>:> >try>:> >num1>=> int>(>input>(>'Enter num1: '>))> >num2>=> int>(>input>(>'Enter num2: '>))> >answer>=> f>'{num1} / {num2} = {num1 / num2}'> >except> ValueError as e:> >print>(>'Try putting an integer value.
Error Occured:'>, e)> >except> ZeroDivisionError as ex:> >print>(>'Division by zero is invalid!
Error Occured:'>, ex)> >else>:> >print>(answer)> >break> |
>
>
Výstup:

Tiskové výjimky
Nyní, když jsme viděli, jaké výjimky přesně jsou, jak vypadají a jak s nimi zacházet, nyní se podíváme na jejich tisk.
Pro tisk výjimek používáme 'tak jako' klíčové slovo Pythonu.
Použili jsme stejný příklad, který jsme použili dříve. Použili jsme klíčové slovo ‚as‘ a deklarovali jsme proměnnou ‚ve‘ pro ‚ValueError‘ a ‚zde‘ pro ‚ZeroDivisionError‘. Pokud pak narazíme na nějaké výjimky, napsali jsme kód pro tisk této výjimky. Stále však nejsme schopni vidět typ výjimky, který jsme dostali.
Python3
while> True>:> >try>:> >num1>=> int>(>input>(>'Enter num1: '>))> >num2>=> int>(>input>(>'Enter num2: '>))> >answer>=> f>'{num1} / {num2} = {num1 / num2}'> >except> ValueError as ve:> >print>(ve)> >except> ZeroDivisionError as zde:> >print>(zde)> >else>:> >print>(answer)> >break> |
>
>
Výstup:
Enter num1: a invalid literal for int() with base 10: 'a' Enter num1: 0 Enter num2: 0 division by zero Enter num1: 16 Enter num2: 4 16 / 4 = 4.0>
Typ výjimky tisku
Abychom viděli typ výjimky, můžeme použít funkci type().
Zde jsme použili funkci type() ke zjištění typu výjimky, na kterou jsme narazili při spouštění kódu.
Python3
while> True>:> >try>:> >num1>=> int>(>input>(>'Enter num1: '>))> >num2>=> int>(>input>(>'Enter num2: '>))> >answer>=> f>'{num1} / {num2} = {num1 / num2}'> >except> ValueError as ve:> >print>(>type>(ve), ve)> >except> ZeroDivisionError as zde:> >print>(>type>(zde), zde)> >else>:> >print>(answer)> >break> |
Herec Rekha
>
>
Výstup
Enter num1: a invalid literal for int() with base 10: 'a' Enter num1: 1 Enter num2: 0 division by zero Enter num1: 4 Enter num2: 2 4 / 2 = 2.0>