Et unntak er en uventet hendelse, som oppstår under kjøringen av programmet. Det er også kjent som en kjøretidsfeil. Når den feilen oppstår, genererer Python et unntak under kjøringen, og som kan håndteres, noe som forhindrer programmet i å avbryte. I denne artikkelen skal vi fokusere på 'Hvordan kan vi skrive ut et unntak i Python?'
Hva er unntak i Python?
I Python , Unntak er en type feil i programmet. En feil kalles et 'unntak' når programmet er syntaktisk korrekt, men det oppstår en feil mens det kjøres.
Eksempel : I eksemplet prøver vi å dele et tall med null slik at det gir en kjøretidsfeil.
Python3
num1>=> 5> num2>=> 0> print>(num1>/> num2)> |
>
sharwanand
>
Produksjon
Traceback (most recent call last): File 'Solution.py', line 5, in print(num1 / num2) ZeroDivisionError : division by zero>
Dette programmet er syntaktisk korrekt . Det eneste problemet her er på grunn av tallene som brukes til operasjonen. Siden vi ikke kan dele noe tall med 0, gir det en feil. Dermed er dette et eksempel på 'Unntak'.
Hvordan ser unntakene ut?
I programmet ovenfor, da vi utførte det, fikk vi et unntak. Feilen som ble kastet, viste linjen der feilen oppstod, den nøyaktige linjen og feiltypen.
Feiltypen som ble vist kalles 'Unntak'. Gjennom unntak får vi vite om problemet som har oppstått. Unntaket i programmet ovenfor er ZeroDivisionError: divisjon med null .
Eksempel : Her gjøres tilordningen av variabelen var1 av en undefined variable , var2.
Python3
linux-vert
var1>=> var2> |
>
>
Produksjon
Traceback (most recent call last): File 'Solution.py', line 2, in var1 = var2 NameError: name 'var2' is not defined>
Ovenfor kan vi se unntaket som NameError: Navnet 'var2' er ikke definert .
Unntakshåndtering i Python
Unntak kan være veldig plagsomme til tider. Her er hvor konseptet med unntakshåndtering kommer inn. Gjennom unntakshåndtering kan vi enkelt håndtere unntakene for brukeren i stedet for å bare kaste feil til brukeren.
Eksempel: I dette programmet er inndata tatt i typen 'int'. Men hvis vi skriver inn et tegn i det, vil det gi en 'ValueError'. Dette kan forvirre brukeren mange ganger. Det er her vi utfører unntakshåndteringen. I stedet for å kaste verdifeil og forvirre brukeren, vil vi vise en uttalelse som foreslår brukeren å prøve igjen, og vi vil gi brukeren en sjanse til å prøve å skrive inn tallene på nytt.
Python3
num1>=> int>(>input>(>'Enter num1: '>))> num2>=> int>(>input>(>'Enter num2: '>))> answer>=> f>'{num1} / {num2} = {num1 / num2}'> print>(answer)> |
rev vs ulv
>
>
Produksjon
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'> Bruker prøve, bortsett fra og annet
I denne koden kjøres while-løkken fordi vi ønsker å la brukeren prøve til input er gitt på riktig måte. Vi har brukt 'try'-klausulen. Try-leddet ser etter feilene i linjene i den klausulen.
Hvis det oppstår et unntak, hopper det til «unntatt»-klausulen og skriver ut feilmeldingen fra oss. Vi har skrevet to unntatt klausuler, en med ValueError og den andre med ZeroDivisionError. Hver av disse klausulene omhandler respektive unntak og skriver ut de respektive meldingene.
Så, til slutt, har vi skrevet den andre klausulen. Hvis det ikke oppstår noen feil, utføres den andre blokken. I else-blokken skriver vi ut kvotienten til divisjonen og bryter ut fra løkken.
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> |
>
hva er rom
>
Produksjon:

Utskriftsunntak
Nå, som vi har sett hva unntak er, hvordan de ser ut og hvordan de skal håndteres, skal vi nå se på å skrive dem ut.
For å skrive ut unntakene bruker vi 'som' nøkkelordet til Python.
Vi har brukt samme eksempel som vi brukte tidligere. Vi har brukt søkeordet 'as' og erklært variabelen 've' for 'ValueError' og 'zde' for 'ZeroDivisionError'. Deretter, hvis vi støter på noen unntak, har vi skrevet koden for å skrive ut unntaket. Men fortsatt er vi ikke i stand til å se typen unntak vi fikk.
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> |
>
>
Produksjon:
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>
Utskriftsunntakstype
For å se unntakstypen kan vi bruke type()-funksjonen.
Her har vi brukt type()-funksjonen for å vite hvilken type unntak vi har møtt mens vi kjørte koden.
Python3
123 film
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> |
>
>
Produksjon
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>