A kivételkezelés az, hogy testre szabhatja és megjelenítheti a hibaüzeneteket a program azon részein, amelyek nem működnek.
Függetlenül attól, hogy webhelyet épít, API-t, modult vagy bármilyen más terméket készít a Python használatával, a kivételek hatékony kezelésének képessége kifejezetten megadja a hiba okát.
Itt megnézzük, hogyan kezelheti a kivételeket a Pythonban.
Hogyan működik a kivételkezelés a Pythonban
Amikor kivételt emel, azt mondja a Pythonnak, hogy hozzon létre egy üzenetet, ha a kódblokk nem sikerül. A kivétel kezelése olyan, mintha azt mondanánk valakinek, hogy próbálja meg megemelni a súlyát. És ha nem tudják, tudatniuk kell veled.
A Python kivételének felvetéséhez azonban meg kell mondania a Pythonnak, hogy próbáljon meg futtatni egy adott kódblokkot. Ha ez a blokk nem sikerül, akkor megkérheti a Pythont, hogy emeljen egy meghatározott kivételt a sikertelen kód alól.
Mikor használjon kivételeket a Python programozásban?
A legtöbb esetben a szokásos Python-hibákat kivételekkel maszkolhatja. De ébernek kell maradnia, mivel ez hibakeresési problémákat okozhat. Következésképpen nehéz lehet kideríteni egy esetleges hiba kiváltó okát.
Ezért akkor használjon kivételeket, ha megfelelően tesztelte a kódot, és biztos abban, hogy működik. Végső soron a legjobb gyakorlat, ha azokat a lehetséges hibák kezelésére használja, amelyek a felhasználó végéből fakadhatnak, nem pedig maga a kód.
Más szavakkal, a kivételeket figyelmeztető eszközként használhatja arra, hogy a felhasználókat eligazítsa a program használatáról.
A Python-kivételek kezelése
A kivételek Pythonban történő kezeléséhez először be kell csomagolnia a kódot a próbáld... kivéve Blokk. Esetenként szükség lehet a végül utasítás a további műveletek kezeléséhez, az Ön igényeitől függően.
A Python-kivételek kódolási koncepciója általában így néz ki:
próbáld ki:
"végrehajtandó kód"
kivéve:
"hiba üzenet"
Mint korábban említettük, használhatja is végül kivételblokkban. De a kódot, amelyet a végül záradék független, és fut, függetlenül attól, hogy van-e kivétel.
Lényegében jól jön, ha van egy másik kódblokkja, amelyet folyamatosan futtatni szeretne, függetlenül attól, hogy mi történik a próbáld... kivéve Blokk.
Íme egy példa:
próbáld ki:
nyomtatás (9 + 6)
kivéve:
nyomtatás ("hibaüzenet")
végül:
nyomtatás ("kérjük, indítsa újra")
Kimenet:
15
kérjük, indítsa újra
A fenti kódban kérjük, indítsa újra folyamatosan fut, függetlenül attól, hogy van-e kivétel vagy sem.
An más állapot is követhet egy kivéve nyilatkozat:
próbáld ki:
C = 2 + B
kivéve:
nyomtatás ("B meghatározandó")
más:
print (u "Sikeresen hozzáadva! Az eredmény:% s "% (C))
Kimenet: B meghatározása szükséges
Most próbálkozzon újra a "B" karakterrel:
próbáld ki:
B = 5
C = 2 + B
kivéve:
nyomtatás ("B meghatározandó")
más:
print (u "Sikeresen hozzáadva! Az eredmény:% s "% (C))
Kimenet: Sikeresen hozzáadva! Az eredmény 7
A fenti példák nem szabványosított kivételek. De kifejezettebb kivételed lehet, ha a beépített (meghatározott) és a nem szabványosított kivételeket kombinálod:
próbáld ki:
C = 2 + B
kivéve a NameError hibát:
print (err, ":", "B meg kell határozni, kérem")
más:
print (u "Sikeresen hozzáadva! Az eredmény:% s "% (C))
Kimenet: A "B" név nincs meghatározva: B-t meg kell határozni, kérem
A fenti kivétel először azt ellenőrzi, hogy van-e a NameError ban,-ben próbáld ki Blokk. Ezután kinyomtatja a szabványt NameError kivétel először ("a" B "név nincs meghatározva"). És támogatja az írásbeli kivétellel ("B-t meg kell határozni, kérem").
Összefüggő: Alapvető programozási alapelvek, amelyeket minden programozónak ismernie kell
És ha a kivételek láncolatát szeretné kezelni, akkor kísérheti a próbáld ki blokkolja sok kivéve nyilatkozatok. Ez nagyon hasznos, ha a próbáld ki a blokk sok kivételt tartalmazhat:
próbáld ki:
B = 5
C = 2 + B
D = úszó (6)
F = 7/0
kivéve a NameError hibát:
print (err, ":", "B meg kell határozni, kérem")
kivéve a ValueError mint val:
print (val, ":", "Az adatok nem konvertálhatók")
a ZeroDivisionError kivételével nullaként:
print (zeroerr, ":", "Nem lehet osztani egy számot nullával")
más:
print (u "A művelet sikeres! Az eredmények:% s,% s és% s "% (C, D, F))
Kimenet: osztás nullával: Egy számot nem lehet osztani nullával
Mi van, ha a felosztás érvényes? Például helyettesítés F = 7/0 a fenti kódban F = 7/5 ad:
Kimenet: A művelet sikeres! Az eredmények a következők: 7, 6,0 és 1,4
Felhasználó által definiált kivételek a Pythonban
Előállhat a kivételével is, és később felhívhatja őket a program során. Ez lehetővé teszi, hogy konkrét leírást adjon a kivételéről, és tetszés szerint nevezze el.
Ennek ellenére minden felhasználó által definiált kivétel (közvetlenül vagy közvetve) továbbra is a beépített forrásból származik Kivétel osztályú Python.
Az alábbi példakód hivatkozik az alapra Kivétel közvetlenül hívással Futtatási hiba ebből:
class connectionError (RuntimeError):
def __init __ (én, érték):
én.érték = érték
próbáld ki:
raise connectionError ("Rossz hosztnév")
a connectionError as err kivételével:
nyomtatás (err.value)
Kimenet: Rossz hostnév
Vegye figyelembe, hogy kapcsolati hiba, ebben az esetben egy felhasználó által definiált osztály, amelyet bármikor emelhet, amikor szüksége van rá a programjában.
Összefüggő: A kezdő útmutató a reguláris kifejezésekhez a Pythonnal
A felhasználó által definiált kivételt úgy teheti meg, hogy közvetlenül a Kivétel alaposztály. Az alábbi kivétel azonban megakadályozza az 5 kivonását a 6-ból, és közvetlenül hívja a kivételt az alaposztályból:
osztályhibák (kivétel):
passz
class sixFiveError (hibák):
def __init __ (én, érték, üzenet):
én.érték = érték
én.üzenet = üzenet
próbáld ki:
raise sixFiveError (6-5, "Ez az alrész nem engedélyezett")
kivéve sixFiveError as e:
nyomtatás ("Hiba történt:", e. üzenet)
Kimenet: Hiba történt: Ez az elvonás nem engedélyezett
A gyakorlatban egy korábban definiált kivételt használhat egy másik függvény meghívásával. Például létrehozhat egy floatError amely csak két úszó hozzáadását teszi lehetővé:
# Először hívja meg az alap kivétel osztályokat:
osztályhibák (kivétel):
passz
# Ezután levezetheti saját kivételét az alaposztályból:
osztály FloatError (hibák):
def __init __ (én, érték, üzenet):
én.érték = érték
én.üzenet = üzenet
# Hozzon létre egy függvényt két úszó hozzáadásához:
def addTwoFloat (a, b):
if (típus (a) és (b) típus)! = float:
emelje fel a FloatError szót (a + b, "A számok lebegnek a hozzáadáshoz")
más:
nyomtatás (a + b)
addTwoFloat (4, 7)
Kimenet: __main __. FloatError: (11, 'A számok lebegnek a hozzáadáshoz')
Mert most meghatároztad a FloatError osztály, a Python felveti, ha megpróbál két nem lebegő literált hozzáadni a addtwoFloat funkció.
Kinyomtathatja a FloatError osztály ugyanabban a Python fájlban, ahová létrehozta, hogy lássa, mi történik:
nyomtatás (FloatError)
Kimenet:
FloatErrorazonban nem beépített Python kivétel. Ezt telefonon ellenőrizheti FloatError egy másik friss Python fájlban, ahol még nem hozta létre ezt az osztályt:
nyomtatás (FloatError)
Kimenet: NameError: A 'FloatError' név nincs meghatározva
Kapsz egy NameError mert a Python nem ismeri el standard kivételként.
Megpróbálhatja más hibakategóriák önmeghatározását is, hogy lássa, hogyan játszanak le.
Tegye felhasználóbarátabbá a Python programokat, kivéve
A Pythonban számos szokásos kivétel van. De meghatározhatod a tiedet is. Mindazonáltal a program használatának egyszerűsége bizonyos mértékben attól függ, hogyan kezeli a különféle kivételeket (legyenek a felhasználó által definiáltak, nem specifikusak vagy szabványosak).
A kivételek azonban lehetővé teszik Önnek, hogy programjának működjön, amikor a felhasználók interakcióba lépnek velük. A hiba okának világos és tömör megfogalmazása a felhasználók figyelmét is felvilágosítja arról, hogy mit csinálnak rosszul, és néha jó irányba mutatják őket.
Szerelje fel magát azzal a know-how-val, hogy minden Python hibát összezavarjon az útjában.
Olvassa el a következőt
- Programozás
- Piton
- Kódolási oktatóanyagok

Idowu minden okos technológiával és termelékenységgel rajong. Szabadidejében kódolással játszik, és ha unatkozik, átvált a sakktáblára, de szereti egyszer-egyszer elszakadni a rutintól is. Az a szenvedély, hogy megmutatja az embereknek a modern technológiát, további írásra ösztönzi.
Iratkozzon fel hírlevelünkre
Csatlakozzon hírlevelünkhöz, amely műszaki tippeket, véleményeket, ingyenes e-könyveket és exkluzív ajánlatokat tartalmaz!
Még egy lépés…!
Kérjük, erősítse meg e-mail címét az imént elküldött e-mailben.