Hogyan kezeljük a kivételeket a Pythonban

Hogyan kezeljük a kivételeket a Pythonban

A kivételkezelés lehetővé teszi a hibaüzenetek testreszabását és megjelenítését a program nem működő részein.





Akár webhelyet épít, akár API -t, modult vagy bármely más terméket készít a Python használatával, a kivételek hatékony kezelése lehetővé teszi a hiba okának kifejezett kimondását.





Itt megvizsgáljuk, hogyan kezelheti a kivételeket a Pythonban.





Hogyan működik a kivételkezelés a Pythonban

Amikor kivételeket emel, azt mondja a Pythonnak, hogy jelenítsen meg üzenetet, amikor egy kódblokk meghibásodik. A kivételkezelés olyan, mintha azt mondanánk valakinek, hogy próbálja meg emelni a súlyt. És ha nem tudják, értesíteniük kell.

Ahhoz azonban, hogy kivételt emeljen a Pythonban, meg kell mondania a Pythonnak, hogy próbálja meg futtatni egy adott kódblokkot. Ha ez a blokk nem sikerül, akkor megkérheti a Python -t, hogy hozzon létre egy meghatározott kivételt a sikertelen kódtól.



Mikor érdemes kivételeket használni a Python programozásában?

A legtöbb esetben kivételek használatával elfedheti a standard Python -hibákat. De ébernek kell maradnia, mivel ez hibakeresési problémákat okozhat. Következésképpen nehéz lehet kitalálni az esetleges hiba kiváltó okát.

Ezért használjon kivételeket, ha kellően tesztelte a kódot, és biztos abban, hogy működik. Végső soron az a legjobb gyakorlat, ha ezeket használja a potenciális hibák kezelésére, amelyek a felhasználó végéből származhatnak, nem pedig a kódból.





Más szóval, a kivételeket figyelmeztető eszközként használhatja, hogy útmutatást adjon a felhasználóknak a program használatáról.

Python kivételek kezelése

A kivételek kezeléséhez a Pythonban először be kell csomagolnia a kódot a próbáld ... kivéve Blokk. Esetenként szükség lehet a végül nyilatkozatot, hogy szükségleteitől függően további műveleteket végezzen.





A Python kivételek kódolási koncepciója általában így néz ki:

try:
'code to be executed'
except:
'error message'

Amint korábban említettük, használhatja is végül kivétel blokkban. De a kód, amit a végül záradék független, és attól függetlenül fut, ha van kivétel.

Lényegében jól jön, ha van egy másik kódblokkja, amelyet folyamatosan futtatni szeretne, függetlenül attól, hogy mi történik a próbáld ... kivéve Blokk.

Íme egy példa:

try:
print(9+6)
except:
print('error message')
finally:
print('please restart')
Output:
15
please restart

A fenti kódban, kérjük, indítsa újra folyamatosan fut, függetlenül attól, hogy van -e kivétel vagy sem.

An más állapot is követheti an kivéve nyilatkozat:

try:
C = 2 + B
except:
print('B needs to be defined')
else:
print(u'Added successfully! The result is %s'%(C))
Output: B needs to be defined

Most próbálja meg újra a 'B' meghatározásával:

try:
B = 5
C = 2 + B
except:
print('B needs to be defined')
else:
print(u'Added successfully! The result is %s'%(C))
Output: Added successfully! The result is 7

A fenti példák nem szabványos kivételek. Kifejezettebb kivétel lehet azonban, ha a beépített (meghatározott) kivételeket nem szabványosokkal kombinálja:

try:
C = 2 + B
except NameError as err:
print(err, ':', 'B needs to be defined, please')
else:
print(u'Added successfully! The result is %s'%(C))
Output: name 'B' is not defined : B needs to be defined, please

A fenti kivétel először azt ellenőrzi, hogy van -e a NameError ban,-ben próbáld ki Blokk. Ezután kinyomtatja a szabványt NameError kivétel elsőként („a„ B ”név nincs megadva”). És támogatja az Ön írásbeli kivételével ('B -t meg kell határozni, kérem').

Kapcsolódó: Alapvető programozási elvek, amelyeket minden programozónak tudnia kell

hogyan lehet streamelni a pc -t a tv -re

Ha pedig kivételek láncolatát szeretné kezelni, kísérheti a próbáld ki blokk sok kivéve nyilatkozatok. Ez nagyon praktikus, ha a tiéd próbáld ki A blokk számos kivétellel rendelkezik:

try:
B = 5
C = 2 + B
D = float(6)
F = 7/0
except NameError as err:
print(err,':', 'B needs to be defined, please')
except ValueError as val:
print(val,':', 'You can't convert that data')
except ZeroDivisionError as zeroerr:
print(zeroerr,':', 'You can't divide a number by zero')
else:
print(u'Operation successfull! The results are: %s, %s, and %s'%(C, D, F))
Output: division by zero : You can't divide a number by zero

Mi van, ha a felosztás érvényes? Például cserélni F = 7/0 a fenti kódban a F = 7/5 ad:

Output: Operation successfull! The results are: 7, 6.0, and 1.4

Felhasználó által meghatározott kivételek a Pythonban

Jöhet a kivétel is, és később felhívhatja őket a programban. Ez lehetővé teszi a kivétel konkrét leírását, és tetszés szerinti elnevezést.

Ennek ellenére minden felhasználó által meghatározott kivétel (közvetlenül vagy közvetve) továbbra is a beépítettből származik Kivétel osztályú Python.

Az alábbi példakód hivatkozik az alapra Kivétel közvetlenül hívással Futtatási hiba ebből:

class connectionError(RuntimeError):
def __init__(self, value):
self.value = value
try:
raise connectionError('Bad hostname')
except connectionError as err:
print(err.value)
Output: Bad hostname

Vegye figyelembe, hogy kapcsolati hiba , ebben az esetben egy felhasználó által meghatározott osztály, amelyet bármikor emelhet, amikor szüksége van rá a programjában.

Összefüggő: Kezdő útmutató a rendszeres kifejezésekhez Python segítségével

A felhasználó által meghatározott kivételt közvetlenül a Kivétel alaposztály. Az alábbi kivétel azonban megakadályozza az 5 kivonását 6 -ból, és közvetlenül hívja a kivételt az alaposztályból:

class errors(Exception):
pass
class sixFiveError(errors):
def __init__(self, value, message):
self.value = value
self.message = message
try:
raise sixFiveError(6-5,'This substraction is not allowed')
except sixFiveError as e:
print('There was an error:', e.message)
Output: There was an error: This substraction is not allowed

A gyakorlatban használhat egy korábban meghatározott kivételt egy másik függvény meghívásával. Például létrehozhat egy floatError amely csak két úszó hozzáadását teszi lehetővé:

# First call the base exception classes:
class errors(Exception):
pass
# Next, derive your own exception from the base class:
class FloatError(errors):
def __init__(self, value, message):
self.value = value
self.message = message
# Create a function to add two floats:
def addTwoFloat(a, b):
if (type(a) and type(b)) != float:
raise FloatError(a+b,'Numbers must be float to add')
else:
print(a + b)
addTwoFloat(4, 7)
Output: __main__.FloatError: (11, 'Numbers must be float to add')

Mivel most meghatározta a FloatError osztály, a Python megemeli, ha két nem lebegő literált próbál hozzáadni a addtwoFloat funkció.

Kinyomtathatja a FloatError osztályt ugyanabban a Python -fájlban, ahol létrehozta, hogy lássa, mi történik:

print(FloatError)
Output:

FloatError azonban nem beépített Python kivétel. Ezt telefonon ellenőrizheti FloatError egy másik friss Python -fájlban, ahol nem hozta létre ezt az osztályt:

print(FloatError)
Output: NameError: name 'FloatError' is not defined

Kapsz egy NameError mert a Python nem ismeri fel standard kivételnek.

Megpróbálhat önállóan definiálni más hibaosztályokat is, hogy megnézze, hogyan játszanak.

Tegye Python programjait felhasználóbarátabbá kivételekkel

Sok szabványos kivétel van a Pythonban. De meghatározhatja a sajátját is. Mindazonáltal a program használatának egyszerűsége bizonyos mértékig attól függ, hogyan kezeli a különféle kivételeket (legyenek azok felhasználó által meghatározott, nem specifikusak vagy szabványosak).

A kivételek azonban lehetővé teszik, hogy diktálja a program működését, amikor a felhasználók interakcióba lépnek velük. A hiba okának egyértelmű és tömör megfogalmazása fejet ad a felhasználóknak arról is, hogy mit csinálnak rosszul, és néha a helyes irányba is irányítja őket.

Részvény Részvény Csipog Email A Python -kód hibakeresése

Felszerelheti magát a know-how-val, hogy összezúzzon minden Python hibát az útjában.

Olvassa tovább
Kapcsolódó témák
  • Programozás
  • Piton
  • Kódolási oktatóanyagok
A szerzőről Idisou Omisola(94 cikk megjelent)

Idowu szenvedélyes minden intelligens technológia és termelékenység iránt. Szabadidejében kódolással játszik, és ha unatkozik, sakktáblára vált, de szeret időnként elszakadni a rutintól. Szenvedélye, hogy megmutassa az embereknek a modern technológia körüljárását, motiválja őt, hogy írjon többet.

Továbbiak Idowu Omisola -tól

Iratkozzon fel hírlevelünkre

Csatlakozz hírlevelünkhöz, ahol technikai tippeket, véleményeket, ingyenes e -könyveket és exkluzív ajánlatokat találsz!

Feliratkozáshoz kattintson ide