Ebben az oktatóanyagban megismerheti a Pythonba beépített különböző típusú hibákat és kivételeket. Felmerülnek, amikor a Python tolmács hibákkal találkozik.
Videó: Python kivételkezelés
Bizonyos hibákat elkövethetünk egy program írása közben, amelyek hibákhoz vezetnek, amikor megpróbáljuk futtatni. A python program azonnal leáll, amikor kezeletlen hibát észlel. Ezek a hibák nagyjából két osztályba sorolhatók:
- Szintaxis hibák
- Logikai hibák (kivételek)
Python szintaxis hibák
A nyelv megfelelő szerkezetének (szintaxisának) be nem tartása által okozott hibát szintaxis hibának vagy elemzési hibának nevezzük .
Nézzünk meg egy példát:
>>> if a < 3 File "", line 1 if a < 3 SyntaxError: invalid syntax
Amint a példában látható, egy nyíl jelzi, hogy az elemző hol futott be a szintaktikai hibába.
Itt észrevehetjük, hogy kettőspont :
hiányzik a if
nyilatkozatból.
Python logikai hibák (kivételek)
A futás közben fellépő hibákat (a szintaktikai teszt átadása után) kivételnek vagy logikai hibának nevezzük .
Például akkor fordulnak elő, amikor megpróbálunk megnyitni egy fájlt (olvasásra), amely nem létezik ( FileNotFoundError
), megpróbálunk elosztani egy számot nullával ( ZeroDivisionError
), vagy megpróbálunk olyan modult importálni, amely nem létezik ( ImportError
).
Amikor ilyen típusú futásidejű hibák fordulnak elő, a Python létrehoz egy kivételobjektumot. Ha nem megfelelően kezelik, akkor nyomon követi a hibát, és részleteket ad a hiba okáról.
Nézzük meg, hogyan kezeli a Python ezeket a hibákat:
>>> 1 / 0 Traceback (most recent call last): File "", line 301, in runcode File "", line 1, in ZeroDivisionError: division by zero >>> open("imaginary.txt") Traceback (most recent call last): File "", line 301, in runcode File "", line 1, in FileNotFoundError: (Errno 2) No such file or directory: 'imaginary.txt'
Beépített Python kivételek
Az illegális műveletek kivételt jelenthetnek. Rengeteg olyan beépített kivétel van a Pythonban, amelyek akkor merülnek fel, amikor megfelelő hibák lépnek fel. Az összes beépített kivételt a beépített local()
függvény segítségével tekinthetjük meg az alábbiak szerint:
print(dir(locals()('__builtins__')))
locals()('__builtins__')
visszaadja a beépített kivételek, függvények és attribútumok modulját. dir
lehetővé teszi számunkra, hogy ezeket az attribútumokat karakterláncként soroljuk fel.
Az alábbiakban felsoroljuk a Python programozás általános beépített kivételeit és az őket okozó hibákat:
Kivétel | Hiba oka |
---|---|
AssertionError | Felmerül, ha egy assert nyilatkozat nem sikerül. |
AttributeError | Felmerül, ha az attribútum hozzárendelése vagy hivatkozása sikertelen. |
EOFError | Akkor emelkedik, amikor a input() függvény eléri a fájl végének állapotát. |
FloatingPointError | Emelkedik, ha egy lebegőpontos művelet sikertelen. |
GeneratorExit | Emelje meg, amikor egy generátor close() módszerét hívják meg. |
ImportError | Akkor emelkedik, ha az importált modul nem található. |
IndexError | Akkor emeljük, ha egy sorozat indexe a tartományon kívül esik. |
KeyError | Akkor emelt, ha egy kulcs nem található egy szótárban. |
KeyboardInterrupt | Akkor emelkedik, amikor a felhasználó lenyomja a megszakítási gombot ( Ctrl+C vagy Delete ). |
MemoryError | Akkor emelt, amikor egy műveletnél elfogy a memória. |
NameError | Akkor emelt, ha egy változó nem található helyi vagy globális hatókörben. |
NotImplementedError | Absztrakt módszerekkel emelték. |
OSError | Akkor emelkedik, amikor a rendszer működése a rendszerrel kapcsolatos hibát okoz. |
OverflowError | Akkor emelt, ha egy számtani művelet eredménye túl nagy ahhoz, hogy ábrázolható legyen. |
ReferenceError | Akkor emelkedik, ha gyenge referencia-proxyt használnak a szemétszedett referens eléréséhez. |
RuntimeError | Akkor emelt, ha egy hiba nem tartozik más kategóriába. |
StopIteration | next() Funkció által emelve annak jelzésére, hogy nincs több tétel, amelyet az iterátor visszaadna. |
SyntaxError | Az elemző emeli, ha szintaktikai hiba lép fel. |
IndentationError | Akkor emelt, ha helytelen behúzás van. |
TabError | Akkor emelhetõ, ha a behúzás következetlen fülekbõl és szóközökbõl áll. |
SystemError | Akkor emelkedik, amikor a tolmács belső hibát észlel. |
SystemExit | sys.exit() Funkció által emelt . |
TypeError | Akkor emelkedik, ha egy funkciót vagy műveletet helytelen típusú objektumra alkalmaznak. |
UnboundLocalError | Akkor emelkedik, ha egy függvényben vagy metódusban hivatkozunk egy helyi változóra, de ehhez a változóhoz nincs érték kötve. |
UnicodeError | Emelkedik, amikor Unicode-hoz kapcsolódó kódolási vagy dekódolási hiba lép fel. |
UnicodeEncodeError | Akkor emelkedik, amikor a kódolás során egy Unicode-tal kapcsolatos hiba lép fel. |
UnicodeDecodeError | Akkor merül fel, amikor a dekódolás során Unicode-tal kapcsolatos hiba lép fel. |
UnicodeTranslateError | Akkor merül fel, amikor a fordítás során Unicode-tal kapcsolatos hiba lép fel. |
ValueError | Akkor emelkedik, ha egy függvény helyes típusú, de nem megfelelő argumentumot kap. |
ZeroDivisionError | Akkor emelkedik, ha a osztás vagy a modulo művelet második operandusja nulla. |
Ha szükséges, a Pythonban meghatározhatjuk saját kivételeinket is. Ha többet szeretne megtudni róluk, keresse fel a Python felhasználó által definiált kivételeket.
Mi lehet kezelni ezeket a beépített és felhasználó által definiált kivételek Python segítségével try
, except
és finally
nyilatkozatokat. Ha többet szeretne megtudni róluk, látogasson el a Python try, kivéve és végül utasításokat.