Výnimka je neočakávaná udalosť, ktorá nastane počas vykonávania programu. Je tiež známa ako chyba spustenia. Keď sa vyskytne táto chyba, Python počas vykonávania vygeneruje výnimku, ktorú je možné spracovať, čo zabráni prerušeniu vášho programu. V tomto článku sa zameriame na „Ako môžeme vytlačiť výnimku v Pythone?“
Čo je výnimka v Pythone?
In Python , Výnimka je typ chyby v programe. Chyba sa nazýva „Výnimka“, keď je program syntakticky správny, ale pri jeho vykonávaní sa vyskytne chyba.
Príklad : V príklade sa pokúšame deliť číslo nulou, takže to spôsobí chybu behu.
Python3
num1>=> 5> num2>=> 0> print>(num1>/> num2)> |
počítať zreteľne
>
>
Výkon
Traceback (most recent call last): File 'Solution.py', line 5, in print(num1 / num2) ZeroDivisionError : division by zero>
Tento program je syntakticky správny . Jediný problém je tu kvôli číslam, ktoré sa používajú na operáciu. Keďže žiadne číslo nemôžeme deliť 0, vyvolá chybu. Toto je teda príklad „výnimky“.
Ako vyzerajú výnimky?
Vo vyššie uvedenom programe, keď sme ho spustili, sme dostali výnimku. Chyba, ktorá bola vyvolaná, ukázala riadok, na ktorom sa chyba vyskytla, presný riadok a typ chyby.
Zobrazený typ chyby sa nazýva „Výnimka“. Prostredníctvom výnimiek sa dozvieme o probléme, ktorý sa vyskytol. Výnimkou vo vyššie uvedenom programe je ZeroDivisionError: delenie nulou .
Príklad : Tu priradenie premennej var1 vykoná an nedefinovaná premenná , var2.
Python3
var1>=> var2> |
>
>
Výkon
Traceback (most recent call last): File 'Solution.py', line 2, in var1 = var2 NameError: name 'var2' is not defined>
Vyššie môžeme vidieť Výnimku ako NameError: názov „var2“ nie je definovaný .
Spracovanie výnimiek v Pythone
Výnimky vedia občas poriadne potrápiť. Tu prichádza na scénu koncept spracovania výnimiek. Prostredníctvom spracovania výnimiek môžeme jednoducho spracovať výnimky pre používateľa namiesto toho, aby sme na používateľa len hádzali chyby.
Príklad: V tomto programe sa zadáva vstup typu „int“. Ak do nej ale zadáme znak, vyhodí ‚Chyba hodnoty‘. To môže používateľa mnohokrát zmiasť. Tu je miesto, kde vykonávame spracovanie výnimiek. Namiesto toho, aby sme vyhodili chybu hodnoty a zmiatli používateľa, zobrazíme vyhlásenie, ktoré používateľovi navrhne, aby to skúsil znova, a dáme používateľovi možnosť skúsiť zadať čísla znova.
Python3
num1>=> int>(>input>(>'Enter num1: '>))> num2>=> int>(>input>(>'Enter num2: '>))> answer>=> f>'{num1} / {num2} = {num1 / num2}'> print>(answer)> |
>
python nový riadok
>
Výkon
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'> Použitie try, okrem a iné
V tomto kóde je cyklus while spustený, pretože chceme nechať používateľa skúšať, kým nie je vstup zadaný správnym spôsobom. Použili sme klauzulu „try“. Klauzula try kontroluje chyby v riadkoch v tejto klauzule.
Ak sa vyskytne výnimka, preskočí na klauzulu „okrem“ a vytlačí nami poskytnuté chybové hlásenie. Napísali sme dve okrem klauzúl, jednu s ValueError a druhú s ZeroDivisionError. Každá z týchto doložiek sa zaoberá príslušnými výnimkami a vytlačí príslušné správy.
Nakoniec sme napísali klauzulu else. Ak sa nevyskytne žiadna chyba, vykoná sa blok else. V bloku else vytlačíme podiel delenia a vylomíme zo sluč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ýkon:

Výnimky tlače
Teraz, keď sme videli, aké výnimky presne sú, ako vyzerajú a ako s nimi zaobchádzať, teraz sa pozrieme na ich tlač.
Na tlač výnimiek používame „ako“ kľúčové slovo Pythonu.
Použili sme rovnaký príklad, aký sme použili predtým. Použili sme kľúčové slovo „as“ a deklarovali sme premennú „ve“ pre „ValueError“ a „zde“ pre „ZeroDivisionError“. Potom, ak narazíme na nejaké výnimky, napísali sme kód na tlač tejto výnimky. Stále však nie sme schopní vidieť typ výnimky, ktorú sme dostali.
typ casting a konverzia typu v jave
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ýkon:
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ýnimky tlače
Na zobrazenie typu výnimky môžeme použiť funkciu type().
Tu sme použili funkciu type() na zistenie typu výnimky, s ktorou sme sa stretli pri spúšťaní kódu.
Python3
java n-tice
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> |
>
>
Výkon
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>