Python hibák és beépített kivételek

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:

  1. Szintaxis hibák
  2. 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 ifnyilatkozatbó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. dirlehető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 assertnyilatkozat 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+Cvagy 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 finallynyilatkozatokat. Ha többet szeretne megtudni róluk, látogasson el a Python try, kivéve és végül utasításokat.

érdekes cikkek...