Piton

Python kivétel

Python kivétel

Kivételt képez az az esemény, amely a program futtatása során felmerül a program normál folyamatának leállítására vagy megváltoztatására. Például egy hiba kivételt jelent. A többi programozási nyelvhez hasonlóan a Python is sok beépített kivételt tartalmaz. Ezek a kivételek akkor merülnek fel, ha a program futtatásakor hiba lép fel. A hiba típusa határozza meg, hogy mely kivételt kell felvetni. Kivétel bekövetkezésekor a Python tolmács ellenőrzi, hogy a kivételt kezelik-e; ha nem, akkor leállítja a programot. Ez a cikk különféle példákon keresztül ismerteti a Python kivételeit.

Beépített Python kivételek

Amint arról korábban beszéltünk, a Python sok beépített kivétellel rendelkezik, amelyek akkor merülnek fel, amikor egy program végrehajtása során hiba lép fel. Minden kivétel egy „Kivétel” alaposztályból származik. A következők tartalmaznak néhány beépített Python-kivételt, az egyes kivételtípusok rövid leírása mellett:

Kivétel Leírás
Kivétel Minden kivétel ebből az osztályból származik.
ImportError Ez a kivétel akkor merül fel, ha egy adott modult importál, és nem található.
EOFError Ez a fájlvégi kivétel. Ez a kivétel a fájl végének elérésekor következik be.
ZeroDivisionError Ez a kivétel akkor merül fel, ha egy számot elosztunk nullával.
KeyError Ez a kivétel akkor merül fel, ha megadnak vagy használnak egy bizonyos kulcsot, amely nincs meghatározva egy szótárban.
IndexError Ez a kivétel akkor merül fel, amikor megkísérelték elérni a tartományon kívül eső sorozatindexet.
FloatingPointError Ez a kivétel akkor merül fel, ha egy lebegőpontos művelet sikertelen.

Ez a Python néhány beépített kivétele. Kérjük, látogassa meg a hivatalos dokumentációt a beépített kivételek használatáról a Pythonban, amely a https: // docs címen található.piton.org / 3 / könyvtár / kivételek.html.

Kivételhasználat a Pythonban

A Pythonban található kivételeket a try utasítás segítségével kezeljük. Az a kóddarab, amely kivételt dobhat vagy felvethet, egy try blokkban valósul meg. A try blokk mellett egy kivétel blokk van megvalósítva a kivétel kezelésére. A kivétel blokkban elkapjuk a kivételt, és eldöntjük, hogy milyen műveletet hajtsunk végre, amikor az adott kivétellel találkozunk. A try és kivétel blokkok írásának szintaxisa a következő:

próbáld ki:
hajtsa végre a műveletet vagy a funkciót
kivéve:
funkcionalitás a kivétel kezeléséhez

Most egy egyszerű kódot valósítunk meg a Python szkriptben a try és kivételével a blokkok használatával.

Itt egy 'name' változót nyomtatunk, amely nincs meghatározva. Ez kivételt vet fel a kivétel blokkban.

#próbáld ki a blokkot
próbáld ki:
nyomtatott név)
# kivéve a blokkot
kivéve:
nyomtatás ("Kivétel történt")

Kimenet

Ha nem történik kivétel, akkor csak a try blokk kerül végrehajtásra. A kivétel blokkban ki van nyomtatva, hogy kivétel történt.

Nézzünk meg egy másik példát, ahol meghatározzuk a névváltozót:

# a névváltozó meghatározása
name = "Mark"
#próbáld ki a blokkot
próbáld ki:
nyomtatott név)
# kivéve a blokkot
kivéve:
nyomtatás ("Kivétel történt")

Kimenet

A fenti példában a try blokk végrehajtásra kerül, és a kivétel blokk kihagyásra kerül, mert a program nem vet fel kivételt. A blokkokat kivéve annyit definiálhatunk a programunkban, amennyit csak akarunk. Minden blokk kivételével egyfajta kivételt kezel.

#próbáld ki a blokkot
próbáld ki:
nyomtatott név)
# kivéve a blokkot, hogy elkapja a név hibát
kivéve NameError:
print ("A változó nincs meghatározva")
# kivéve a blokkot
kivéve:
nyomtatás ("Valami hiba történt, kivéve a névhibát")

Kimenet

A Pythonban az Exception az összes kivétel alaposztálya. Ahelyett, hogy beírnánk egy adott kivétel nevét a kivétel blokkba, egyszerűen írhatjuk a „Kivétel” kifejezést, és mindenfajta kivételt ilyen módon elkaphatunk.

#próbáld ki a blokkot
próbáld ki:
nyomtatott név)
# kivéve a blokkot, hogy elkapja a hibát
kivéve az exp:
nyomtatás (exp.__osztály__)
# kivéve a blokkot
kivéve:
nyomtatás ("Valami hiba történt, kivéve a névhibát")

Kimenet

Az exp.A __class__ a kivétel osztályának nevét adja vissza.

Hasonlóképpen nézzünk meg egy példát a „ZeroDivisionError” osztályra.

#próbáld ki a blokkot
próbáld ki:
x = 1/0
nyomtatás (x)
# kivéve a blokkot, hogy elkapja a hibát
kivéve az exp:
nyomtatás (exp.__osztály__)
# kivéve a blokkot
kivéve:
nyomtatás ("Valami hiba történt, kivéve a névhibát")

Kimenet

A másik blokk

A másik blokkot a try és kivétel blokkokkal együtt használják. A else blokk meghatározza a kódrészletet, amelyet akkor hajtanak végre, ha a try blokk sikeresen végrehajtódik, és nem történik hiba. Előfordulhat, hogy a próbablokk sikeres végrehajtása után üzenetet kell nyomtatnia vagy funkciót kell végrehajtania. Emiatt a try blokkot kivéve a try és a block blokkokat megvalósíthatjuk.

Ebben a példában a másik blokkot implementáljuk a Python szkriptünkben.

#próbáld ki a blokkot
próbáld ki:
x = 1/2
nyomtatás (x)
# kivéve a blokkot, hogy elkapja a hibát
kivéve az exp:
nyomtatás (exp.__osztály__)
#más blokk végrehajtása
más:
nyomtatás ("Minden rendben ment")

Kimenet

A másik blokk a try blokk sikeres végrehajtását követően kerül végrehajtásra.

Most nézzünk meg egy másik példát az else blokk segítségével.

#próbáld ki a blokkot
próbáld ki:
name = "Mark"
# kivéve a blokkot, hogy elkapja a hibát
kivéve az exp:
nyomtatás (exp.__osztály__)
#más blokk végrehajtása
más:
nyomtatás ("A név:", név)

Kimenet

A fenti példában a névváltozó a try blokkban van meghatározva, és a másik blokkban van kinyomtatva.

Az utolsó blokk

A végül blokk tartalmazza azt a kóddarabot, amelyet végre kell hajtani, függetlenül attól, hogy a try blokk kivételt jelent-e. Az utolsó blokk opcionális, és a try blokkkal van deklarálva. Például, ha megnyitottunk egy szöveges fájlt a try blokk elolvasására, és ez hibát vagy kivételt vet fel, akkor jobb, ha a fájlt az utolsó blokkba csatoljuk, még akkor is, ha a hiba bekövetkezik. Vezessük be a Python szkriptünk utolsó blokkját.

#próbáld ki a blokkot
próbáld ki:
nyomtatás (my_dict)
# kivéve a blokkot, hogy elkapja a hibát
kivéve az exp:
nyomtatás (exp.__osztály__)
# végre az utolsó blokkot
végül:
print ("Ez az utolsó blokk")
print ("Az utolsó blokk végrehajtásra kerül")

Kimenet

A kimeneten látható, hogy a try blokk kivételt jelent. Az utolsó blokkot azonban a végén hajtják végre.

Most nyissunk meg egy szövegfájlt a try blokkban, amely kivételt vet fel, míg a fájl az utolsó blokkba van zárva.

#próbáld ki a blokkot
próbáld ki:
fileObj = open ("tanulóm.xml "," r ")
fileObj.keresni (-2)
nyomtat (fileObj.readlines ())
# kivéve a blokkot
kivéve az exp:
nyomtatás (exp.__osztály__)
# végre az utolsó blokkot
végül:
fileObj.Bezárás()
nyomtatás ("A fájl sikeresen bezárult")

Kimenet

Amint láthatja, az értékhibától függetlenül a fájl sikeresen bezárásra került a végső blokkon belül.

Emeljen kivételt

Bár a hibák automatikusan felmerülnek, amikor hiba lép fel, a Pythonban manuálisan is emelhet kivételeket. A emel kulcsszó a kivétel felvetésére vagy eldobására szolgál.

Most felvetünk néhány kivételt az emelés kulcsszóval. A következő példában az if feltétel megvalósul a nem negatív számok ellenőrzésére. Ha létezik nem negatív szám, akkor a „Nem negatív számok nem engedélyezettek” kivétel felmerül.

# két számváltozó deklarálása
num1 = 20
num2 = -10
ha ((szám1<0) | (num2<0)):
emelés Kivétel ("Nem negatív számok nem megengedettek")
más:
nyomtatás (num1 + num2)

Kimenet

Következtetés

Kivétel történik a futás közbeni hibára adott válaszként. A Pythonban a try és kivétel blokkok használatával kezelhetjük a kivételeket. Ez a cikk különféle példákon keresztül elmagyarázta, hogyan lehet a Pythonban felhasználni a kivételeket.

Az X-Mouse Button Control segítségével az egér gombjait másképp alakíthatja át a különböző szoftvereknél
Lehet, hogy szüksége van egy eszközre, amely megváltoztathatja az egér vezérlését minden használt alkalmazással. Ebben az esetben kipróbálhatja az úgy...
Microsoft Sculpt Touch vezeték nélküli egér áttekintés
Nemrég olvastam a Microsoft Sculpt Touch vezeték nélküli egér és úgy döntött, hogy megveszi. Egy ideig használat után úgy döntöttem, hogy megosztom ve...
AppyMouse képernyős Trackpad és egérmutató a Windows táblagépekhez
A táblagép-felhasználók gyakran hiányolják az egérmutatót, különösen akkor, ha szokták használni a laptopokat. Az érintőképernyős okostelefonok és táb...