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 blockProva:
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 namnvariabelnname = "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 blockProva:
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 blockProva:
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 blockProva:
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 blockProva:
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 blockProva:
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 blockProva:
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 blockProva:
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å nummervariablernum1 = 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.