Python Kivételkezelés: próbálkozás, elkapás, végül és emelés [Példa]
Mi az a kivételkezelés Python?
Kivételt képez a program végrehajtása során fellépő hiba. A program futtatása közben azonban Python kivételt generál, amelyet kezelni kell, hogy elkerülje a program összeomlását. In Python nyelv, a kivételek automatikusan aktiválódnak hiba esetén, vagy kiválthatja és elfoghatja őket a kódja.
A kivétel azt jelzi, hogy bár az esemény megtörténhet, az ilyen típusú események ritkán fordulnak elő. Ha a metódus nem tudja kezelni a kivételt, akkor a hívó függvényébe kerül. Végül, amikor egy kivételt kidobnak a fő funkcióból, a program hirtelen leáll.
Gyakori példák a kivételekre
- Osztás nullával
- Nem létező fájl elérése.
- Két összeférhetetlen típus hozzáadása
- Egy sorozat nem létező indexéhez próbál hozzáférni
- A tábla eltávolítása a leválasztott adatbázis-kiszolgálóról.
- A rendelkezésre álló összeget meghaladó ATM-felvétel
Miért érdemes a kivételeket használni?
Itt vannak a kivételek alkalmazásának okai Python:
- A kivételkezelés lehetővé teszi a hibakezelő kód és a normál kód elkülönítését.
- Kivételt képez a Python tárgy ami hibát jelent.
- A kódhoz fűzött megjegyzésekhez hasonlóan a kivételek segítik Önt abban, hogy emlékeztesse magát a program elvárásaira.
- Tisztázza a kódot és javítja az olvashatóságot.
- Lehetővé teszi a következmények ösztönzését, mivel a hibakezelés egy helyen és egy módon történik.
- Kivételt képez a hibaüzenetek kényelmes kezelési módja.
- In Python, kivételt emelhet ki a programban a kivétel kivétel módszerével.
- A kivétel felemelése segít megszakítani az aktuális kódvégrehajtást, és visszaállítja a kivételt a várt értékre, amíg nem kezelik.
- Kivételek feldolgozása olyan összetevők esetében, amelyek nem tudják közvetlenül kezelni őket.
Kivételek szabályai
Íme néhány alapvető szabály Python kivételkezelés:
- A kivételeknek osztályobjektumoknak kell lenniük
- Osztálykivételek esetén használhatja a try utasítást kivételes záradékkal, amely egy adott osztályt említ.
- Még ha egy utasítás vagy kifejezés szintaktikailag helyes is, akkor is hibát jelezhet, amikor megpróbálják végrehajtani.
- A végrehajtás során talált hibákat kivételnek nevezzük, és nem feltétlenül végzetesek.
Python Kivételkezelési mechanizmus
A kivételkezelést a következő 5 kulcsszó kezeli:
- megpróbál
- fogás
- végül
- dobás
Python Próbálja ki a nyilatkozatot
A try utasítás tartalmazza a try kulcsszót, majd egy kettőspontot (:) és egy kódkészletet, amelyben kivételek fordulhatnak elő. Egy vagy több záradéka van.
A try utasítás végrehajtása során, ha akkor nem történt kivétel, az értelmező figyelmen kívül hagyja az adott try utasítás kivételkezelőit.
Abban az esetben, ha bármilyen kivétel történik egy try suite-ban, a try suite lejár, és a programvezérlés átkerül az egyező, kivéve a try suite-t követő kezelőhöz.
Syntax: try: statement(s)
A fogási nyilatkozat
A fogási blokkok egyszerre csak egy argumentumot vesznek igénybe, ez az a kivételtípus, amelyet valószínűleg elkap. Ezek az érvek a kivételek egy bizonyos típusától, amely variálható, a kivételek átfogó kategóriájáig terjedhetnek.
A fogási blokk szabályai:
- Fogási blokkot a catch kulcsszó használatával határozhat meg
- A Catch Exception paraméter mindig zárójelben van
- Mindig azt a kivételtípust képviseli, amelyet a catch blokk kezel.
- Egy kivételkezelő kódot két {} kapcsos zárójel közé írunk.
- Egyetlen próbablokkon belül több fogási blokkot is elhelyezhet.
- Catch blokkot csak a try blokk után használhat.
- Az összes fogási blokkot alosztálytól szuperosztály kivételig 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égre nyilatkozat be Python
Végül a blokk mindig végrehajtódik, függetlenül attól, hogy kivételt dobtak-e vagy sem. Az utolsó kulcsszó lehetővé teszi egy kódblokk létrehozását, amely a try-catch blokkot követi.
Végül a záradék nem kötelező. Célja olyan tisztítási műveletek meghatározása, amelyeket minden körülmények között végre kell hajtani.
try:
raise KeyboardInterrupt
finally:
print 'welcome, world!'
Output
Welcome, world!
KeyboardInterrupt
Végül a záradék a try utasítás előtt kerül végrehajtásra.
Nyilatkozat emelése Python
A raise utasítás megad egy argumentumot, amely inicializálja a kivételobjektumot. Itt vessző követi a kivétel nevét, és a vesszőt követő argumentum vagy sor.
Syntax:
raise [Exception [, args [, traceback]]]
Ebben a szintaxisban az argumentum nem kötelező, és a végrehajtáskor a kivétel argumentum értéke mindig nincs.
Példa:
A Python kivétel lehet bármilyen érték, például karakterlánc, osztály, szám vagy objektum. A legtöbb ilyen kivételt, amelyeket a Python core osztályok olyan argumentummal, amely az osztály példánya.
fontos Python hibák
| Hiba típusa | Leírás |
|---|---|
| Aritmetikai hiba | Az ArithmeticError minden aritmetikai kivétel alaposztályaként működik. Az aritmetikai műveletek hibáira vetődik fel. |
| ImportError | Az ImportError üzenet akkor jelenik meg, amikor olyan modult próbál importálni, amely nem jelenik meg. Ez a fajta kivétel akkor fordul elő, ha gépelési hibát vétett a modulnévben, vagy abban a modulban, amely nem szerepel a szabványos elérési útban. |
| IndexError | IndexErroris jelenik meg, amikor olyan sorozatra próbál hivatkozni, amely kívül esik a tartományon. |
| KeyError | Ha egy adott kulcs nem található a szótárban, KeyError kivétel jelenik meg. |
| NameError | A NameError akkor jelenik meg, ha egy névre olyan kódban hivatkoznak, amely soha nem létezik a helyi vagy globális névtérben. |
| ValueError | Értékhiba akkor lép fel, ha egy függvény vagy beépített művelet olyan argumentumot kap, amely esetleg megfelelő típusú, de nem rendelkezik megfelelő értékkel. |
| EOFhiba | Ez a fajta hiba akkor jelentkezik, ha az egyik beépített függvény (input() vagy raw_input()) elér egy EOF feltételt anélkül, hogy adatokat olvasna. |
| ZeroDivisonError | Ez a fajta hiba akkor jelentkezik, ha nullával való osztás vagy modul minden numerikus típusnál megtörténik. |
| IOError- | Ez a fajta hiba akkor jelentkezik, ha egy bemeneti/kimeneti művelet meghiúsul. |
| szintaktikai hiba | SyntaxErrors akkor jelentkezik, ha hiba van a fájlban Python szintaxis. |
| Identification Error | Ez a hiba akkor jelentkezik, 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 | Aritmetikai hiba, például osztás nullával. |
| ArraylndexOutOfBoundsException | A tömb indexe határon kívül van. |
| ArrayStoreException | A hozzárendelés egy nem kompatibilis típusú tömbelemhez segít. |
| ClassCastException | Érvénytelen szereposztás |
| MlegalMonitorStateException | A monitor illegális működése, mint a feloldatlan szálra való várakozás. |
| MlegalStateException | A környezet vagy az alkalmazás rossz állapotban van. |
| ClassNotFoundException | Az osztály nem található. |
| CloneNotSupportedException | Próbálja meg klónozni egy olyan objektumot, amely nem valósítja meg a klónozható felületet. |
| Illegális hozzáférés kivétel | Az osztályhoz való hozzáférés megtagadva. |
| PéldányosításKivétel | Akkor fordul elő, amikor megpróbál létrehozni egy interfész vagy absztrakt osztály objektumát. |
| CloneNotSupportedException | Próbálja meg klónozni egy objektumot, amely nem valósítja meg az interfészt. |
Hiba vs. Kivételek
| hiba | kivételek |
|---|---|
| Minden hiba benne van Python a nem ellenőrzött típus. | Ez alól kivételt képeznek a bejelölt és a nem bejelölt típusok is. |
| A futási időben olyan hibák fordulnak elő, amelyek a fordító számára ismeretlenek. | A kivételeket a try-catch blokkok segítségével lehet helyreállítani. |
| A hibákat többnyire az a környezet okozza, amelyben az alkalmazás fut. | Maga az alkalmazás is kivételeket okoz. |
| Példák: OutofMemory Error |
Példák: Ellenőrzött kivételek, SQL kivétel, NullPointerException stb. |
Összegzésként
- Kivételt képez a program végrehajtása során fellépő hiba.
- A kivétel azt jelzi, hogy bár az esemény megtörténhet, az ilyen típusú események ritkán fordulnak elő.
- Gyakori példák a kivételekre: 1) nullával való osztás, 2) nem létező fájl elérése, 3) két nem kompatibilis típus hozzáadása.
- Kivételt képez a Python objektum, amely hibát jelent.
- A try utasítás tartalmazza a try kulcsszót, majd egy kettőspontot (:) és egy kódkészletet, amelyben kivételek fordulhatnak elő. Egy vagy több záradéka van.
- A fogási blokkok egy-egy argumentumot vesznek igénybe, ez az a kivételtípus, amelyet valószínűleg elkap.
- A raise utasítás megad egy argumentumot, amely inicializálja a kivételobjektumot.
- Végül a blokk mindig végrehajtódik, függetlenül attól, hogy kivételt dobtak-e vagy sem.
