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.

instagram viewer

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.

Email
A Python-kód hibakeresése

Szerelje fel magát azzal a know-how-val, hogy minden Python hibát összezavarjon az útjában.

Olvassa el a következőt

Kapcsolódó témák
  • Programozás
  • Piton
  • Kódolási oktatóanyagok
A szerzőről
Idowu Omisola (82 cikk megjelent)

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.

Tovább Idowu Omisolától

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.

.