Python-kivétel kezelése: Próbálja, Catch, Végül

Tartalomjegyzék:

Anonim

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:

  1. próbáld ki
  2. fogás
  3. végül
  4. 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.