Pytonorm

Python-undantag

Python-undantag

Ett undantag är en händelse som uppstår under genomförandet av ett program för att avsluta eller ändra det normala flödet för ett program. Ett fel ger till exempel ett undantag. Liksom andra programmeringsspråk innehåller Python många inbyggda undantag. Dessa undantag tas upp om ett fel uppstår när programmet körs. Felstypen avgör vilket undantag som ska höjas. När ett undantag inträffar kontrollerar Python-tolken om undantaget hanteras. om inte, avslutas programmet. Den här artikeln förklarar undantag i Python genom olika exempel.

Inbyggda Python-undantag

Som diskuterats tidigare har Python många inbyggda undantag som tas upp när ett fel inträffar under körningen av ett program. Varje undantag härrör från basklassen ”Undantag”. Följande inkluderar några inbyggda Python-undantag, tillsammans med en kort beskrivning av varje undantagstyp:

Undantag Beskrivning
Undantag Varje undantag härrör från denna klass.
ImportError Detta undantag tas upp när en specifik modul importeras och den inte hittas.
EOFError Detta är undantaget för filens slut. Detta undantag inträffar när slutet på filen nås.
ZeroDivisionError Detta undantag höjs när ett tal divideras med noll.
KeyError Detta undantag tas upp om en viss nyckel som inte definieras i en ordlista specificeras eller används.
Indexfel Detta undantag tas upp när man försöker få tillgång till ett sekvensindex som inte ligger inom intervallet.
FloatingPointError Detta undantag tas upp när en flytande punkt misslyckas.

Det här är några av de inbyggda undantagen i Python. Besök den officiella dokumentationen för mer information om hur du använder inbyggda undantag i Python, som finns på https: // docs.pytonorm.org / 3 / bibliotek / undantag.html.

Undantagsanvändning i Python

Undantag i Python hanteras med hjälp av försöksuttrycket. Den kod som kan kasta eller höja ett undantag implementeras i ett försöksblock. Bredvid försöksblocket implementeras ett undantagsblock för att hantera undantaget. I undantagsblocket fångar vi undantaget och bestämmer vilken operation som ska utföras när vi stöter på det specifika undantaget. Syntaksen för att skriva försöket och förutom block är följande:

Prova:
utföra operationen eller funktionen
bortsett från:
funktionalitet för att hantera undantaget

Nu kommer vi att implementera en enkel kod i vårt Python-skript med hjälp av försök och utom blocken.

Här kommer vi att skriva ut en 'namn' variabel som inte är definierad. Detta ger ett undantag i undantagsblocket.

#implementing the try block
Prova:
Skriv namn)
#implementering av undantagsblocket
bortsett från:
tryck ("Ett undantag inträffade")

Produktion

Om inget undantag inträffar körs bara försöksblocket. I undantagsblocket skrivs ett uttalande om att ett undantag har inträffat.

Låt oss titta på ett annat exempel där vi definierar namnvariabeln:

#definiera namnvariabeln
name = "Mark"
#implementing the try block
Prova:
Skriv namn)
#implementering av undantagsblocket
bortsett från:
tryck ("Ett undantag inträffade")

Produktion

I exemplet ovan körs försöksblocket och undantagsblocket hoppas över eftersom programmet inte ger några undantag. Vi kan definiera så många utom block i vårt program som vi vill. Varje block förutom hanterar ett specifikt slags undantag.

#implementing the try block
Prova:
Skriv namn)
#implementering av undantagsblocket för att fånga namnfelet
utom NameError:
print ("Variabeln är inte definierad")
#implementing the except block
bortsett från:
skriva ut ("Något gick fel utom namnfel")

Produktion

I Python är Undantag basklassen för alla undantag. Istället för att skriva namnet på ett visst undantag i undantagsblocket kan vi helt enkelt skriva "Undantag" och fånga alla typer av undantag på detta sätt.

#implementing the try block
Prova:
Skriv namn)
#implementering av undantagsblocket för att fånga upp felet
utom undantag som exp:
skriva ut (exp.__klass__)
#implementering av undantagsblocket
bortsett från:
skriva ut ("Något gick fel utom namnfel")

Produktion

Exp.__klass__ returnerar namnet på undantagsklassen.

Låt oss också titta på ett exempel på klassen “ZeroDivisionError”.

#implementing the try block
Prova:
x = 1/0
skriva ut (x)
#implementering av undantagsblocket för att fånga upp felet
utom undantag som exp:
skriva ut (exp.__klass__)
#implementing the except block
bortsett från:
skriva ut ("Något gick fel utom namnfel")

Produktion

The Other Block

Det andra blocket används med försöks- och undantagsblocken. Det andra blocket definierar en kod kod som körs om försöksblocket körs framgångsrikt och inget fel inträffar. Ibland kan du behöva skriva ut ett meddelande eller utföra en funktion när försöksblocket har körts framgångsrikt. Av denna anledning kan vi implementera det andra blocket med försök och utom block.

I det här exemplet implementerar vi det andra blocket i vårt Python-skript.

#implementing the try block
Prova:
x = 1/2
skriva ut (x)
#implementering av undantagsblocket för att fånga upp felet
utom undantag som exp:
skriva ut (exp.__klass__)
#implementering av det andra blocket
annan:
skriva ut ("Allt gick bra")

Produktion

Det andra blocket körs efter det lyckade utförandet av försöksblocket.

Låt oss nu titta på ett annat exempel med hjälp av den andra blocket.

#implementing the try block
Prova:
namn = "Markera"
#implementering av undantagsblocket för att fånga upp felet
utom undantag som exp:
skriva ut (exp.__klass__)
#implementering av det andra blocket
annan:
tryck ("Namnet är:", namn)

Produktion

I exemplet ovan definieras namnvariabeln inuti försöksblocket och skrivs ut i det andra blocket.

Det slutliga blocket

De till sist blocket innehåller den kod som måste köras oavsett om försöksblocket ger ett undantag. Det slutliga blocket är valfritt och förklaras med försöksblocket. Om vi ​​till exempel har öppnat en textfil för att läsa försöksblocket och det ger upp ett fel eller undantag, är det bättre att bifoga filen i det slutliga blocket, även om felet inträffar. Låt oss implementera det slutliga blocket i vårt Python-skript.

#implementing the try block
Prova:
skriv ut (min_dikt)
#implementering av undantagsblocket för att fånga upp felet
utom undantag som exp:
skriva ut (exp.__klass__)
#implementing the slutligen block
till sist:
skriv ut ("This is the finally block")
print ("Det slutliga blocket körs")

Produktion

I produktionen kan det ses att försöksblocket ger ett undantag. Det slutliga blocket körs dock i slutet.

Låt oss nu öppna en textfil i försöksblocket, vilket ger ett undantag medan filen bifogas i det slutliga blocket.

#implementing the try block
Prova:
fileObj = open ("minstudent.xml "," r ")
fileObj.sök (-2)
skriva ut (fileObj.readlines ())
#implementering av undantagsblocket
utom undantag som exp:
skriva ut (exp.__klass__)
#implementing the slutligen block
till sist:
fileObj.stänga()
skriva ut ("Filen har avslutats")

Produktion

Som du kan se, oavsett värdefel, har filen stängts framgångsrikt i det slutliga blocket.

Höj ett undantag

Även om undantag tas upp automatiskt när ett fel inträffar, kan du i Python också höja undantagen manuellt. De höja nyckelord används för att höja eller kasta undantaget.

Vi kommer nu att ta upp några undantag med hjälp av höge nyckelordet. I följande exempel är if-villkoret implementerat för att kontrollera om det inte är negativa tal. Om det finns några icke-negativa tal, höjs undantaget "Icke-negativa siffror".

#declaring två nummervariabler
num1 = 20
num2 = -10
om ((num1<0) | (num2<0)):
höja undantaget ("Icke-negativa siffror är inte tillåtna")
annan:
skriva ut (num1 + num2)

Produktion

Slutsats

Ett undantag inträffar som svar på ett fel vid körningstid. I Python kan vi hantera undantag med hjälp av försök och utom block. Den här artikeln förklarar hur man använder undantag i Python genom olika exempel.

Hur man använder GameConqueror Cheat Engine i Linux
Artikeln täcker en guide om hur du använder GameConqueror-fuskmotorn i Linux. Många användare som spelar spel på Windows använder ofta applikationen "...
Bästa spelkonsolemulatorer för Linux
Den här artikeln listar populära spelkonsolemuleringsprogram som finns tillgängliga för Linux. Emulation är ett mjukvarukompatibilitetsskikt som emule...
Bästa Linux Distros för spel 2021
Linux-operativsystemet har kommit långt från sitt ursprungliga, enkla, serverbaserade utseende. Detta operativsystem har förbättrats enormt de senaste...