Zpracováním výjimek je vaše schopnost přizpůsobit a zobrazit chybové zprávy pro části vašeho programu, které nefungují.
Ať už vytváříte web, vytváříte API, modul nebo jakýkoli jiný produkt pomocí Pythonu, vaše schopnost efektivně zpracovávat výjimky vám umožní výslovně uvést příčinu chyby.
Zde se podíváme na to, jak zvládnout výjimky v Pythonu.
Jak funguje zpracování výjimek v Pythonu
Když vyvoláte výjimky, říkáte Pythonu, aby vyvolal zprávu, kdykoli selže blok kódu. Výjimečná manipulace je jako říkat někomu, aby se pokusil zvednout váhu. A pokud nemohou, měli by vám to oznámit.
Chcete-li však v Pythonu vyvolat výjimku, řeknete Pythonu, aby se pokusil spustit konkrétní blok kódu. Pokud tento blok selže, můžete požádat Python o zvýšení definované výjimky z neúspěšného kódu.
Kdy byste měli použít výjimky v programování v Pythonu?
Ve většině případů můžete standardní chyby Pythonu maskovat pomocí výjimek. Musíte však zůstat ostražití, protože to může způsobit problémy s laděním. V důsledku toho může být pro vás těžké zjistit příčinu případné chyby.
Proto byste měli použít výjimky, pokud jste dostatečně otestovali svůj kód a jste si jisti, že funguje. Nejvhodnějším postupem je použít je k řešení potenciálních chyb, které mohou vzniknout na konci uživatele, a nikoli na samotném kódu.
Jinými slovy, můžete použít výjimky jako nástroj varování, který uživatelům pomůže, jak používat váš program.
Zpracování výjimek Pythonu
Chcete-li zpracovat výjimky v Pythonu, musíte nejprve zabalit kód do zkuste... kromě blok. Někdy budete možná muset zahrnout a Konečně prohlášení o zpracování dalších akcí v závislosti na vašich potřebách.
Koncept kódování výjimek Pythonu obecně vypadá takto:
Snaž se:
"kód k provedení"
až na:
"chybové hlášení"
Jak již bylo zmíněno dříve, můžete také použít Konečně v bloku výjimek. Ale kód, který napíšete uvnitř a Konečně klauzule je nezávislá a běží bez ohledu na to, zda existuje výjimka.
V podstatě to přijde vhod, pokud máte další blok kódu, který chcete spouštět nepřetržitě bez ohledu na to, co se děje uvnitř zkuste... kromě blok.
Zde je příklad:
Snaž se:
tisk (9 + 6)
až na:
tisk ("chybová zpráva")
Konečně:
tisk ("prosím restartujte")
Výstup:
15
prosím restartujte
Ve výše uvedeném kódu prosím restartujte běží nepřetržitě, bez ohledu na to, zda existuje výjimka nebo ne.
An jiný stav může také následovat až na prohlášení:
Snaž se:
C = 2 + B
až na:
tisk („B je třeba definovat“)
jiný:
tisk (u "Úspěšně přidáno! Výsledkem je% s "% (C))
Výstup: Je třeba definovat B.
Nyní to zkuste znovu s definovaným „B“:
Snaž se:
B = 5
C = 2 + B
až na:
tisk („B je třeba definovat“)
jiný:
tisk (u "Úspěšně přidáno! Výsledkem je% s "% (C))
Výstup: Úspěšně přidáno! Výsledek je 7
Výše uvedené příklady jsou nestandardizované výjimky. Můžete ale mít explicitnější výjimku, když zkombinujete vestavěné (definované) výjimky s nestandardizovanými:
Snaž se:
C = 2 + B
kromě NameError as err:
print (err, ":", "B je třeba definovat, prosím")
jiný:
tisk (u "Úspěšně přidáno! Výsledkem je% s "% (C))
Výstup: název „B“ není definován: B je třeba definovat, prosím
Výše uvedená výjimka nejprve zkontroluje, zda existuje Chyba názvu v Snaž se blok. Poté vytiskne standard Chyba názvu nejprve výjimka („název„ B “není definován“). A podporuje to s vaší písemnou výjimkou ("B je třeba definovat, prosím").
Příbuzný: Základní principy programování, které musí každý programátor znát
A pokud chcete zvládnout řetězec výjimek, můžete také doprovázet a Snaž se blok s mnoha až na prohlášení. To je docela užitečné, pokud vaše Snaž se blok má potenciál mít mnoho výjimek:
Snaž se:
B = 5
C = 2 + B
D = plovák (6)
F = 7/0
kromě NameError as err:
print (err, ":", "B je třeba definovat, prosím")
kromě ValueError jako val:
print (val, ":", "Data nelze převést")
kromě ZeroDivisionError jako zeroerr:
print (zeroerr, ":", "Číslo nelze vydělit nulou")
jiný:
print (u "Operace byla úspěšná! Výsledky jsou:% s,% sa% s (%, C, D, F))
Výstup: dělení nulou: Číslo nelze vydělit nulou
Co když je rozdělení platné? Například nahrazení F = 7/0 ve výše uvedeném kódu s F = 7/5 dává:
Výstup: Provoz úspěšný! Výsledky jsou: 7, 6,0 a 1,4
Uživatelem definované výjimky v Pythonu
Můžete také přijít se svou výjimkou a zavolat jí později ve svém programu. To vám umožní poskytnout konkrétní popis vaší výjimky a pojmenovat ji, jak chcete.
Každá uživatelsky definovaná výjimka (přímo nebo nepřímo) přesto pochází z integrovaného Výjimka třída Pythonu.
Níže uvedený příklad kódu odkazuje na základnu Výjimka přímo voláním Chyba za běhu z toho:
třída connectionError (RuntimeError):
def __init __ (self, value):
self.value = hodnota
Snaž se:
zvýšit connectionError ("špatný název hostitele")
kromě connectionError as err:
tisk (chybová hodnota)
Výstup: Špatný název hostitele
Všimněte si, že chyba připojení, v tomto případě je uživatelem definovaná třída, kterou můžete kdykoli ve svém programu zvýšit.
Příbuzný: Průvodce pro regulární výrazy pro začátečníky v Pythonu
Uživatelskou výjimku můžete vytvořit odvozením přímo z Výjimka základní třída. Výjimka níže však brání odečtení 5 od 6 a volá výjimku přímo ze základní třídy:
chyby třídy (výjimka):
složit
třída sixFiveError (chyby):
def __init __ (self, value, message):
self.value = hodnota
self.message = zpráva
Snaž se:
zvýšit sixFiveError (6-5, „Tento odečet není povolen“)
kromě sixFiveError jako e:
print ("Došlo k chybě:", e.message)
Výstup: Došlo k chybě: Tento odečet není povolen
V praxi můžete použít výjimku, kterou jste definovali dříve, voláním v jiné funkci. Můžete například vytvořit a floatError který umožňuje pouze přidání dvou plováků:
# Nejprve volejte základní třídy výjimek:
chyby třídy (výjimka):
složit
# Dále odvozte svou vlastní výjimku ze základní třídy:
třída FloatError (chyby):
def __init __ (self, value, message):
self.value = hodnota
self.message = zpráva
# Vytvořte funkci pro přidání dvou plováků:
def addTwoFloat (a, b):
if (type (a) and type (b))! = float:
zvýšit FloatError (a + b, "čísla musí být plovoucí, aby bylo možné přidat")
jiný:
tisk (a + b)
addTwoFloat (4, 7)
Výstup: __main __. FloatError: (11, 'Numbers must be float to add')
Protože jste nyní definovali a FloatError třídy, Python to zvýší, pokud se pokusíte přidat dva literály bez float pomocí addtwoFloat funkce.
Můžete vytisknout FloatError třídy ve stejném souboru Pythonu, kde jste jej vytvořili, abyste zjistili, co se stane:
tisk (FloatError)
Výstup:
FloatError, však není vestavěnou výjimkou Pythonu. Můžete to ověřit voláním FloatError v jiném čerstvém souboru Pythonu, kde jste tuto třídu nevytvořili:
tisk (FloatError)
Výstup: NameError: název 'FloatError' není definován
Získáte Chyba názvu protože Python to nerozpozná jako standardní výjimku.
Můžete také zkusit definovat jiné třídy chyb a zjistit, jak se hrají.
Udělejte své programy v Pythonu uživatelsky přívětivějšími s výjimkami
V Pythonu existuje mnoho standardních výjimek. Ale můžete také definovat svůj. Snadnost používání vašeho programu nicméně do určité míry závisí na tom, jak zvládá různé výjimky (ať už definované uživatelem, nespecifické nebo standardní).
Výjimky vám však umožňují diktovat, jak by měl váš program fungovat, když s nimi uživatelé interagují. Jasné a stručné uvedení příčiny chyby také dává uživatelům přehled o tom, co dělají špatně, a někdy je nasměruje správným směrem.
Vybavte se know-how, jak zmáčknout každou chybu Pythonu v cestě.
Přečtěte si další
- Programování
- Krajta
- Výukové programy pro kódování

Idowu je vášnivý pro cokoli inteligentního a produktivního. Ve svém volném čase si hraje s kódováním a když se nudí, přepne se na šachovnici, ale také rád občas vybočuje z rutiny. Jeho vášeň ukázat lidem cestu kolem moderních technologií ho motivuje k dalšímu psaní.
Přihlaste se k odběru našeho zpravodaje
Připojte se k našemu zpravodaji s technickými tipy, recenzemi, bezplatnými elektronickými knihami a exkluzivními nabídkami!
Ještě jeden krok…!
V e-mailu, který jsme vám právě poslali, potvrďte svou e-mailovou adresu.