Mi a kivétel a Pythonban?
Kivételt képez egy hiba, amely a program futtatásakor történik. Egy program futtatása közben azonban a Python kivételt generál, amelyet kezelni kell, hogy elkerülje a program összeomlását. Python nyelvben a kivételek automatikusan kiváltódnak a hibáknál, vagy a kódod kiválthatja és elfoghatja őket.
A kivétel azt jelzi, hogy bár az esemény előfordulhat, ez a fajta esemény ritkán fordul elő. Ha a metódus nem képes kezelni a kivételt, akkor a hívófunkcióra kerül. Végül, ha egy kivétel kivetésre kerül a fő funkcióból, a program hirtelen leáll.
Ebben a Python kivételes kezelési útmutatóban megtudhatja:
- Mi a kivétel a Pythonban?
- Gyakori példák a kivételre
- Miért érdemes használni a Kivételeket?
- Kivételek szabályai
- Kivételes kezelési mechanizmus
- A Try nyilatkozat
- A fogási nyilatkozat
- A Felemelés nyilatkozat
- Fontos Python hibák
- Egyéb fontos Python kivételek
- Hiba vs. kivételek
Gyakori példák a kivételre:
- Osztás nullával
- Hozzáférés egy nem létező fájlhoz.
- Két összeférhetetlen típus hozzáadása
- Megpróbál hozzáférni egy szekvencia nem létező indexéhez
- Tábla eltávolítása a leválasztott adatbázis-kiszolgálóról.
- A rendelkezésre álló összegnél nagyobb összegű ATM-visszavonás
Miért érdemes használni a Kivételeket?
A kivételek Python használatának okai:
- A kivételkezelés lehetővé teszi a hibakezelő kód elkülönítését a normál kódtól.
- Kivételt képez egy Python objektum, amely hibát jelent.
- Csakúgy, mint a kód megjegyzései, a kivételek segítenek emlékeztetni magukat arra, hogy mire számít a program.
- Tisztázza a kódot és javítja az olvashatóságot.
- Lehetővé teszi a következmények serkentését, mivel a hibakezelés egy helyen és módon történik.
- A kivétel egy kényelmes módszer a hibaüzenetek kezelésére.
- A Pythonban kivételt emelhet a programban az raise kivétel metódusának használatával.
- A kivétel emelése segít megszakítani az aktuális kódfuttatást, és a kivételt addig kezeli, amíg vissza nem tér.
- Kivételek feldolgozása olyan alkatrészek esetében, amelyek nem tudják őket közvetlenül kezelni.
Kivételek szabályai
Íme néhány alapvető szabály a Python kivételkezeléshez:
- A kivételeknek objektumoknak kell lenniük
- Osztálykivételek esetén használhatja a try utasítást egy kivételes záradékkal, amely egy adott osztályt említ.
- Még akkor is, ha egy utasítás vagy kifejezés szintaktikailag helyes, hibát jeleníthet meg, amikor megpróbálják végrehajtani.
- A végrehajtás során talált hibákat kivételeknek nevezzük, és nem feltétel nélkül végzetesek.
Kivételes kezelési mechanizmus
A kivételkezelést a következő 5 kulcsszó kezeli:
- próbáld ki
- fogás
- végül
- dobás
A Try nyilatkozat
A try utasítás tartalmazza a try kulcsszót, majd egy kettőspontot (:) és egy kódcsomagot, amelyben kivételek fordulhatnak elő. Egy vagy több záradéka van.
A try utasítás végrehajtása során, ha nem történt kivétel, akkor az értelmező figyelmen kívül hagyja az adott try utasítás kivételkezelőit.
Abban az esetben, ha valamilyen kivétel fordul elő a try csomagban, a try csomag lejár, és a programvezérlés átkerül a megfelelőnek, kivéve a try csomagot követő kezelőt.
Syntax:try:statement(s)
A fogási nyilatkozat
A fogási blokkok egyszerre csak egy argumentumot vesznek fel, ez az a kivétel, amelyet valószínűleg elkap. Ezek az érvek változhatnak egy meghatározott típusú kivételektől, amelyek változtathatók a kivételeket összefogó kategóriákig.
A fogási blokk szabályai:
- Meghatározhat egy fogási blokkot a catch kulcsszó használatával
- A Catch Exception paraméter mindig zárójelben található
- Mindig azt a típusú kivételt képviseli, amelyet a fogási blokk kezel.
- Két {} göndör zárójel közé kivételkódot írnak.
- Több elkapási blokkot helyezhet el egy próbálkozási blokkon belül.
- Fogási blokkot csak a try blokk után használhat.
- Az összes fogási blokkot alosztálytól szuperosztályig kell rendezni.
Példa:
try}catch (ArrayIndexOutOfBoundsException e) {System.err.printin("Caught first " + e.getMessage()); } catch (IOException e) {System.err.printin("Caught second " + e.getMessage());}
Végül blokkolja
Végül a blokk mindig végrehajtódik, függetlenül attól, hogy dobtak-e kivételt vagy sem. Az utolsó kulcsszó lehetővé teszi egy olyan kódblokk létrehozását, amely követi a próbálkozási blokkot.
Végül a záradék nem kötelező. Célja, hogy megtisztító műveleteket határozzon meg, amelyeket minden körülmények között végre kell hajtani.
try:raise KeyboardInterruptfinally:print 'welcome, world!'OutputWelcome, world!KeyboardInterrupt
Végül a záradék végrehajtásra kerül a try utasítás előtt.
A Felemelés nyilatkozat
A raise utasítás megad egy argumentumot, amely inicializálja a kivétel objektumot. Itt egy vessző követi a vesszőt követő kivétel nevét és argumentumát vagy dupláját.
Szintaxis:
raise [Exception [, args [, traceback]]]
Ebben a szintaxisban az argumentum opcionális, és a végrehajtáskor a kivétel argumentum értéke mindig semleges.
Példa:
A Python kivétel lehet bármilyen érték, például karakterlánc, osztály, szám vagy objektum. Ezen Python core által felvetett legtöbb kivétel olyan osztály, amelynek argumentuma az osztály példánya.
Fontos Python hibák
Hiba típusa | Leírás |
ArithmeticError | Az ArithmeticError az összes aritmetikai kivétel alaposztályaként működik. Számtani műveletek hibáira vetítik fel. |
ImportError | Az ImportError felmerül, ha olyan modult próbál importálni, amely nem jelen van. Ez a fajta kivétel akkor fordul elő, ha gépelési hibát követett el a modul nevében, vagy abban a modulban, amely nincs a szokásos elérési útban. |
IndexError | IndexErroris jelenik meg, amikor megpróbál egy olyan tartományra hivatkozni, amely kívül esik a tartományon. |
KeyError | Ha egy adott kulcs nem található egy szótárban, akkor a KeyError kivétel merül fel. |
NameError | A NameError akkor merül fel, ha egy névre hivatkoznak olyan kódban, amely soha nem létezik a helyi vagy globális névtérben. |
ValueError | Értékhiba akkor merül fel, ha egy függvény vagy beépített művelet olyan argumentumot kap, amely lehet megfelelő típusú, de nem rendelkezik megfelelő értékkel. |
EOFerror | Ez a fajta hiba akkor merül fel, amikor az egyik beépített függvény (input () vagy raw_input ()) az adatok beolvasása nélkül eléri az EOF feltételét. |
ZeroDivisonError | Ez a fajta hiba akkor merül fel, ha a nullával való osztás vagy modul minden numerikus típusnál megtörténik. |
IOError- | Ez a fajta hiba akkor merül fel, ha egy bemeneti / kimeneti művelet sikertelen |
szintaktikai hiba | A Python szintaxisában hiba esetén felmerülő hibák. |
IndentationError | Ez a hiba akkor merült fel, ha a behúzás nincs megfelelően meghatározva |
Egyéb fontos Python kivételek
Kivétel | Leírás |
Számtani kivétel | Számtani hiba, például osztás nullával. |
ArraylndexOutOfBoundsException | A tömbindex kívül esik. |
ArrayStoreException | A hozzárendelés segít egy nem kompatibilis típusú tömb elemben. |
ClassCastException | Érvénytelen szereplőgárda |
MlegalMonitorStateException | A monitor illegális működése, például egy lezáratlan szálon való várakozás. |
MlegalStateException | A környezet vagy az alkalmazás hibás állapotban van. |
ClassNotFoundException | Osztály nem található. |
CloneNotSupportedException | Kísérlet klónozni egy olyan objektumot, amely nem valósítja meg a Cloneable interfészt. |
Illegális AccessException | Az osztályhoz való hozzáférést megtagadják. |
InstantiationException | Akkor fordul elő, amikor megpróbál létrehozni egy felület vagy absztrakt osztály objektumát. |
CloneNotSupportedException | Kísérlet klónozni egy olyan objektumot, amely nem valósítja meg az interfészt. |
Hiba vs. kivételek
Hiba | Kivételek |
A Python összes hibája nem ellenőrzött típus. | A kivételek közé tartozik mind a bejelölt, mind az ellenőrizetlen típus. |
Olyan hibák fordulnak elő, amelyek a fordító számára ismeretlenek. | A kivételek helyrehozhatók, ha megpróbálkozási blokkok segítségével kezeljük őket. |
A hibákat leginkább az a környezet okozza, amelyben egy alkalmazás fut. | Maga az alkalmazás kivételt okoz. |
Példák: OutofMemoryError | Példák: Ellenőrzött kivételek, SQL kivétel, NullPointerException stb. |
Összegzés
- Kivételt képez egy hiba, amely egy program futtatása során történt.
- A kivétel azt jelzi, hogy bár az esemény előfordulhat, ez a fajta esemény ritkán fordul elő.
- A kivételek gyakori példái: 1) Nullával való felosztás, 2) Nem létező fájl elérése, 3) Két nem kompatibilis típus hozzáadása.
- Kivételt képez egy Python objektum, amely hibát jelent.
- A try utasítás tartalmazza a try kulcsszót, majd egy kettőspontot (:) és egy kódcsomagot, amelyben kivételek fordulhatnak elő. Egy vagy több záradéka van.
- A fogási blokkok egyszerre csak egy argumentumot vesznek fel, ez az a kivétel, amelyet valószínűleg elkap.
- A raise utasítás megad egy argumentumot, amely inicializálja a kivétel objektumot.
- Végül a blokk mindig végrehajtja, függetlenül attól, hogy kivételt dobtak-e vagy sem.