hogyan lehet a legjobban használni Try kivéve Python-különösen a kezdők
a Python programozás, Kivétel kezelése lehetővé teszi a programozó, hogy flow control. És nincs. beépített kivételek a hibák elkapására abban az esetben, ha a kód megszakad. A try-except használata a leggyakoribb és legtermészetesebb módja a váratlan hibák kezelésének, valamint még sok más kivételkezelési konstrukciónak. Ebben az oktatóanyagban felfedezheti a try használatának legjobb technikáit-a Python kivételével.
hibakezelés vagy kivételkezelés a Pythonban a kivételek beállításával érvényesíthető. A try blokk használatával végrehajthat egy kivételt, és kezelheti a hibát egy except blokk belsejében. Amikor a kód megszakad egy try blokkban, a rendszeres kódfolyam leáll, és a vezérlő a hiba kezelésére az except blokkra kapcsol.
olvassa el – tanulja meg a Python kivétel kezelését a semmiből.
miért használjuk a Try-Except / Try-Except-else záradékot? A try-except és a try-except-else segítségével elkerülheti a kódból eredő számos ismeretlen problémát. Például az LBYL (Look before you leap) stílust használó Python kód versenyfeltételekhez vezethet. Itt a try-except záradék megmenthet. Is, vannak olyan esetek, amikor a kód kritikusan függ néhány információtól, amely elavulttá válhat, amíg meg nem kapja. Például az operációs rendszerre hívó kód.út.létezik vagy várólista.a full sikertelen lehet, mivel ezek a funkciók olyan adatokat adhatnak vissza, amelyek használatuk idejére elavultak. A bölcsebb választás itt az lenne, ha a kódban a try-except-else stílust követné a fenti esetek megbízhatóbb kezelése érdekében.
kivételek emelése Pythonban is megengedett. Ez azt jelenti, hogy dobhat vagy emelhet kivételt, amikor csak szükséges. Meg tudod csinálni egyszerűen hívja a kódot. Miután felemelte, a kivétel a szokásos módon leállítja az aktuális végrehajtást, és tovább halad a híváskötegben, amíg kezelni nem fogja.
miért használjunk kivételeket? Nem csak a népszerű problémák megoldásában segítenek, mint például a versenyfeltételek, hanem nagyon hasznosak a hibák ellenőrzésében olyan területeken, mint a hurkok, a fájlkezelés, az adatbázis-kommunikáció, a hálózati hozzáférés stb.
ezért szélesebb körű problémákat fogunk lefedni, és megoldásokat nyújtunk ebben a bejegyzésben. Kérjük, vegye figyelembe, hogy a kivételkezelés olyan művészet, amely hatalmas hatáskörrel rendelkezik a robusztus és minőségi kód írására. Így, brace olvasni néhány vitaindító kivételeket együtt a legjobb módja annak, hogy kezelni őket.
el kell olvasnia – minden, amit tudnia kell a Python másolási fájlról .
Python:
- tetszőleges Kivétel kezelése
- több kivétel fogása egyben, kivéve a blokkot
- több Kivétel kezelése egy kivétellel
- kivételek újbóli emelése a Pythonban
- mikor kell használni az else záradékot
- használja a
- használja az AS kulcsszót az egyes Kivételtípusok fogásához
- a legjobb gyakorlat a kézi emeléshez
- kivételek
- hogyan lehet kihagyni a hibákat és folytatni a végrehajtást
- Leggyakoribb kivételhibák a Pythonban
- példák a leggyakoribb kivételekre a Pythonban
1. Hogyan kell kezelni egy tetszőleges kivétel
néha szükség lehet egy módja annak, hogy bármilyen tetszőleges kivétel is szeretné, hogy képes legyen megjeleníteni a hiba vagy kivétel üzenetet.
a Python kivételekkel könnyen elérhető. Ellenőrizze az alábbi kódot. Tesztelés közben az alábbi példában elhelyezheti a kódot a try blokkban.
try: #your codeexcept Exception as ex: print(ex)
vissza az elejére
2. Catch több kivétel egy kivételével blokk
lehet fogni több kivétel egy kivételével blokk. Lásd az alábbi példát.
except (Exception1, Exception2) as e: pass
Felhívjuk figyelmét, hogy a kivételeket a változótól vesszővel elválaszthatja, amely a Python 2.6/2.7-ben alkalmazható. A Python 3-ban ezt nem lehet megtenni. Tehát inkább a kulcsszót kell használnia.
vissza az elejére
3. Több Kivétel kezelése egy kivétellel
Több kivétel kezelésének számos módja van. Ezek közül az első megköveteli az összes kivétel elhelyezését, amelyek valószínűleg tuple formájában fordulnak elő. Lásd alább.
try: file = open('input-file', 'open mode')except (IOError, EOFError) as e: print("Testing multiple exceptions. {}".format(e.args))
a következő módszer az, hogy minden kivételt egy dedikált kivételblokkban kezelünk. Hozzáadhat annyi, kivéve a blokkokat, ha szükséges. Lásd az alábbi példát.
try: file = open('input-file', 'open mode')except EOFError as ex: print("Caught the EOF error.") raise exexcept IOError as e: print("Caught the I/O error.") raise ex
az utolsó, de nem utolsó sorban az except használata kivétel attribútum említése nélkül.
try: file = open('input-file', 'open mode')except: # In case of any unhandled error, throw it away raise
Ez a módszer hasznos lehet, ha nincs fogalma a program által esetlegesen dobott kivételről.
vissza az elejére
4. Újra emelése kivételek Python
kivételek egyszer emelt folyamatosan felfelé a hívó módszereket, amíg kezelni. Bár felvehet egy kivétel záradékot, amely csak érvelés nélkül hívhat. Ez a kivétel újbóli bevezetését eredményezi.
Lásd az alábbi példakódot.
try: # Intentionally raise an exception. raise Exception('I learn Python!')except: print("Entered in except.") # Re-raise the exception. raise
kimenet:
Entered in except.Traceback (most recent call last): File "python", line 3, in <module>Exception: I learn Python!
vissza az elejére
5. Mikor kell használni az else záradékot
használjon else záradékot közvetlenül a try-except blokk után. Az else záradék csak akkor jelenik meg, ha nem dobnak kivételt. Az else utasításnak mindig meg kell előznie az except blokkokat.
az else blokkokban hozzáadhat olyan kódot, amelyet futtatni szeretne, ha nem történt hiba.
Lásd az alábbi példát. Ebben a mintában láthatja, hogy egy while hurok végtelenül fut. A kód felhasználói bemenetet kér, majd a beépített funkcióval elemzi. Ha a felhasználó nulla értéket ad meg, akkor az except blokk megüt. Ellenkező esetben a kód átfolyik az else blokkon.
while True: # Enter integer value from the console. x = int(input()) # Divide 1 by x to test error cases try: result = 1 / x except: print("Error case") exit(0) else: print("Pass case") exit(1)
vissza az elejére
6. Használja a
Ha van egy kód, amelyet minden helyzetben futtatni szeretne ,akkor írja be a. Python mindig fut az utasításokat kódolt a . Ez a tisztítási feladatok elvégzésének leggyakoribb módja. Azt is ellenőrizheti, hogy a tisztítás átjut-e.
a try záradék hibát észlel. Miután a kód a kivétel blokk lesz végre, az utasításokat a fog futni.
kérjük, vegye figyelembe, hogy az a mindig futni fog, még akkor is, ha előtte visszatért.
Lásd az alábbi példát.
try: # Intentionally raise an error. x = 1 / 0except: # Except clause: print("Error occurred")finally: # Finally clause: print("The is hit")
kimenet:
Error occurredThe is hit
vissza az elejére
7. Használja az As kulcsszót, hogy elkapjon bizonyos kivételtípusokat
Az as <azonosító> segítségével új objektumot hozhat létre. És akkor is a kivétel objektumot. Itt, az alábbi példában, létrehozzuk az IOError objektumot, majd a záradékon belül használjuk.
try: # Intentionally raise an error. f = open("no-file")except IOError as err: # Creating IOError instance for book keeping. print("Error:", err) print("Code:", err.errno)
kimenet:
('Error:', IOError(2, 'No such file or directory'))('Code:', 2)
vissza az elejére
8. Legjobb gyakorlat a kivételek kézi emelésére
kerülje az Általános kivételek emelését, mert ha ezt megteszi, akkor az összes többi konkrétabb kivételt is be kell fogni. Ezért a legjobb gyakorlat az, hogy a problémájához közel hozza fel a legkülönlegesebb kivételt.
rossz példa.
def bad_exception(): try: raise ValueError('Intentional - do not want this to get caught') raise Exception('Exception to be handled') except Exception as error: print('Inside the except block: ' + repr(error)) bad_exception()
kimenet:
Inside the except block: ValueError('Intentional - do not want this to get caught',)
legjobb gyakorlat:
itt egy bizonyos típusú kivételt vetünk fel, nem egy általános kivételt. Az args opciót is használjuk a helytelen argumentumok kinyomtatására, ha vannak ilyenek. Lássuk az alábbi példát.
try: raise ValueError('Testing exceptions: The input is in incorrect order', 'one', 'two', 'four') except ValueError as err: print(err.args)
kimenet:
('Testing exceptions: The input is in incorrect order', 'one', 'two', 'four')
vissza az elejére
9. Hogyan lehet kihagyni a hibákat és folytatni a végrehajtást
ideális esetben nem szabad ezt tennie. De ha továbbra is meg akarja tenni, akkor kövesse az alábbi kódot a helyes megközelítés ellenőrzéséhez.
try: assert Falseexcept AssertionError: passprint('Welcome to Prometheus!!!')
kimenet:
Welcome to Prometheus!!!
vissza a lap tetejére
most nézd meg a leggyakoribb Python kivételeket és azok példáit.
leggyakoribb kivételhibák
- IOError-olyan hibáknál fordul elő, mint amikor egy fájl nem nyílik meg.
- ImportError – ha egy python modult nem lehet betölteni vagy elhelyezni.
- ValueError – akkor fordul elő, ha egy függvény megfelelő típusú argumentumot kap, de nem megfelelő értéket.
- KeyboardInterrupt-ez lesz hit, amikor a felhasználó belép a megszakítás gombot (azaz Control-C vagy Del kulcs)
- EOFError – ez lesz emelt, ha a bemeneti funkciók (input()/raw_input()) hit egy end-of-file állapot (EOF), de olvasás nélkül adatokat.
vissza a lap tetejére
példák a leggyakoribb kivételekre
except IOError:print('Error occurred while opening the file.')except ValueError:print('Non-numeric input detected.')except ImportError:print('Unable to locate the module.')except EOFError:print('Identified EOF error.')except KeyboardInterrupt:print('Wrong keyboard input.')except:print('An error occurred.')
vissza a lap tetejére
összefoglaló – hogyan lehet a legjobban használni a próbálkozást-kivéve a Pythonban
programozás közben hibák történnek. Ez egy olyan tény, amelyet senki sem hagyhat figyelmen kívül. Számos oka lehet a hibáknak, mint például a rossz felhasználói bevitel, az elégtelen fájlengedély, a hálózati erőforrás elérhetetlensége, az elégtelen memória vagy valószínűleg a programozó hibája.
mindenesetre mindez kezelhető, ha a kód kivételkezelést használ, és olyan konstrukciókkal valósítja meg, mint a try-Exception, vagy a tr-except-else, try-except-finally. Remélem, tetszett volna olvasni a fenti bemutató.
Ha tetszett a bejegyzés, akkor kérjük, ne hagyja ki, hogy ossza meg barátaival és a közösségi médiában (facebook/twitter).
legjobb,
TechBeamers.