Spracovaním výnimiek je vaša schopnosť prispôsobiť a zobraziť chybové správy pre tie časti vášho programu, ktoré nefungujú.

Či už vytvárate web, vyrábate API, modul alebo akýkoľvek iný produkt pomocou Pythonu, vaša schopnosť efektívne spracovávať výnimky vám umožní výslovne uviesť príčinu chyby.

Tu sa pozrieme na to, ako môžete zvládnuť výnimky v Pythone.

Ako funguje spracovanie výnimiek v Pythone

Keď vyvoláte výnimky, hovoríte Pythonu, aby priniesol správu vždy, keď zlyhá blok kódu. Výnimočná manipulácia je ako povedať niekomu, aby sa pokúsil zdvihnúť váhu. A ak nemôžu, mali by vám to dať vedieť.

Ak chcete v Pythone vyvolať výnimku, povedzte Pythonu, aby sa pokúsil spustiť konkrétny blok kódu. Ak tento blok zlyhá, môžete požiadať Python o zvýšenie definovanej výnimky zo zlyhaného kódu.

Kedy by ste mali použiť výnimky v programovaní v Pythone?

Vo väčšine prípadov môžete štandardné chyby Pythonu maskovať pomocou výnimiek. Musíte však zostať ostražití, pretože to môže spôsobiť problémy s ladením. Následne by pre vás mohlo byť ťažké zistiť hlavnú príčinu prípadnej chyby.

instagram viewer

Preto by ste mali používať výnimky, keď ste svoj kód dostatočne otestovali a ste si istí, že funguje. Najlepšie je v konečnom dôsledku použiť ich na riešenie potenciálnych chýb, ktoré môžu vzniknúť na konci používateľa, a nie na samotnom kóde.

Inými slovami, výnimky môžete použiť ako výstražný nástroj, ktorý používateľom poskytne návod, ako používať váš program.

Spracovanie výnimiek Pythonu

Ak chcete spracovať výnimky v Pythone, musíte najskôr zabaliť svoj kód do a skús... až na blokovať. Možno budete niekedy musieť zahrnúť a konečne vyhlásenie o vykonaní ďalších akcií v závislosti od vašich potrieb.

Koncept kódovania výnimiek Pythonu všeobecne vyzerá takto:

skúste:
"kód, ktorý sa má vykonať"
okrem:
"chybná správa"

Ako už bolo spomenuté, môžete tiež použiť konečne v bloku výnimiek. Ale kód, ktorý napíšete do a konečne doložka je nezávislá a beží bez ohľadu na to, či existuje výnimka.

V podstate sa to hodí, ak máte ďalší blok kódu, ktorý chcete spúšťať nepretržite bez ohľadu na to, čo sa deje v rámci skús... až na blokovať.

Tu je príklad:

skúste:
tlač (9 + 6)
okrem:
tlač ("chybové hlásenie")
nakoniec:
tlačiť („reštartujte“)
Výkon:
15
prosím reštartujte

Vo vyššie uvedenom kóde prosím reštartujte beží nepretržite bez ohľadu na to, či existuje výnimka alebo nie.

An inak stav môže tiež nasledovať po okrem vyhlásenie:

skúste:
C = 2 + B
okrem:
tlač („Je potrebné definovať B“)
inak:
print (u "Úspešne pridané! Výsledok je% s "% (C))
Výkon: Je potrebné definovať B.

Teraz to skúste znova s ​​definovaným „B“:

skúste:
B = 5
C = 2 + B
okrem:
tlač („Je potrebné definovať B“)
inak:
print (u "Úspešne pridané! Výsledok je% s "% (C))
Výkon: Úspešne pridané! Výsledkom je 7

Vyššie uvedené príklady sú neštandardizované výnimky. Môžete však mať výslovnejšiu výnimku, keď skombinujete zabudované (definované) výnimky s neštandardnými:

skúste:
C = 2 + B
okrem NameError as err:
print (err, ":", "B je potrebné definovať, prosím")
inak:
print (u "Úspešne pridané! Výsledok je% s "% (C))
Výkon: meno „B“ nie je definované: B je potrebné definovať, prosím

Vyššie uvedená výnimka najskôr skontroluje, či existuje NameError v skús blokovať. Potom sa vytlačí štandard NameError najskôr výnimka („názov„ B “nie je definovaný“). A podporuje to s vašou písomnou výnimkou („B je potrebné definovať, prosím“).

Súvisiace: Základné princípy programovania, ktoré musí každý programátor poznať

A ak sa chcete zaoberať reťazou výnimiek, môžete tiež sprevádzať a skús blok s mnohými okrem Vyhlásenia. To je celkom užitočné, ak skús blok má potenciál mať veľa výnimiek:

skúste:
B = 5
C = 2 + B
D = plavák (6)
F = 7/0
okrem NameError as err:
print (err, ":", "B je potrebné definovať, prosím")
okrem ValueError ako val:
print (val, ":", "Tieto údaje nemôžete previesť")
okrem ZeroDivisionError ako zeroerr:
print (zeroerr, ":", "Číslo nemôžete vydeliť nulou")
inak:
print (u „Operácia bola úspešná! Výsledky sú:% s,% s a% s "% (C, D, F))
Výkon: delenie nulou: Číslo nemôžete vydeliť nulou

Čo ak je rozdelenie platné? Napríklad výmena F = 7/0 vo vyššie uvedenom kóde s F = 7/5 dáva:

Výkon: Prevádzka úspešná! Výsledky sú: 7, 6,0 a 1,4

Užívateľom definované výnimky v Pythone

Môžete tiež prísť so svojou výnimkou a zavolať im neskôr v programe. Takto môžete uviesť konkrétny popis svojej výnimky a pomenovať ju, ako sa vám páči.

Každá výnimka definovaná používateľom (priamo alebo nepriamo) napriek tomu pochádza zo zabudovaného Výnimka trieda Pythonu.

Nasledujúci príklad kódu odkazuje na základňu Výnimka priamo volaním RuntimeError od toho:

trieda connectionError (RuntimeError):
def __init __ (self, value):
self.value = hodnota
skúste:
zvýšiť connectionError ("zlý názov hostiteľa")
okrem connectionError as err:
print (chybná hodnota)
Výkon: Zlý názov hostiteľa

Poznač si to chyba spojenia, v tomto prípade ide o používateľom definovanú triedu, ktorú môžete kedykoľvek zvýšiť vo svojom programe.

Súvisiace: Sprievodca regulárnymi výrazmi pre začiatočníkov v jazyku Python

Užívateľom definovanú výnimku môžete vytvoriť jej odvodením priamo z Výnimka základná trieda. Výnimka uvedená nižšie však bráni odčítaniu 5 od 6 a volá výnimku priamo zo základnej triedy:

chyby triedy (výnimka):
prejsť
trieda sixFiveError (chyby):
def __init __ (self, value, message):
self.value = hodnota
self.message = správa
skúste:
zvýšenie sixFiveError (6-5, „Tento odpočet nie je povolený“)
okrem sixFiveError ako e:
print ("Vyskytla sa chyba:", e.message)
Výkon: Došlo k chybe: Tento odpočet nie je povolený

V praxi môžete použiť výnimku, ktorú ste definovali skôr, a to tak, že ju zavoláte v inej funkcii. Môžete napríklad vytvoriť a floatError ktorý umožňuje pridanie iba dvoch plavákov:

# Najprv zavolajte základné triedy výnimiek:
chyby triedy (výnimka):
prejsť
# Ďalej odvodíme vlastnú výnimku zo základnej triedy:
trieda FloatError (chyby):
def __init __ (self, value, message):
self.value = hodnota
self.message = správa
# Vytvorte funkciu na pridanie dvoch plavákov:
def addTwoFloat (a, b):
if (type (a) and type (b))! = float:
zvýšiť FloatError (a + b, "Pre pridanie musia byť čísla float")
inak:
tlač (a + b)
addTwoFloat (4, 7)
Výkon: __main __. FloatError: (11, „Pre pridanie musia byť čísla float“)

Pretože ste teraz definovali a FloatError triedy, Python to zvýši, ak sa pokúsite pridať dva neplávajúce literály pomocou addtwoFloat funkcie.

Môžete vytlačiť FloatError triedy v rovnakom súbore Python, kde ste ho vytvorili, aby ste videli, čo sa stane:

tlačiť (FloatError)
Výkon:

FloatError, však nie je zabudovanou výnimkou v Pythone. Môžete to overiť volaním FloatError v inom čerstvom súbore Python, kde ste túto triedu nevytvorili:

tlačiť (FloatError)
Výkon: NameError: názov „FloatError“ nie je definovaný

Dostanete a NameError pretože Python to nerozpozná ako štandardnú výnimku.

Môžete tiež skúsiť samy definovať ďalšie triedy chýb a zistiť, ako sa prejavujú.

Urobte svoje programy v Pythone užívateľsky príjemnejšími ako vďaka výnimkám

V Pythone existuje veľa štandardných výnimiek. Môžete však definovať aj to svoje. Ľahkosť použitia vášho programu napriek tomu do istej miery závisí od toho, ako zvládne rôzne výnimky (či už definované používateľom, nešpecifické alebo štandardné).

Výnimky vám však umožňujú diktovať, ako by mal váš program fungovať, keď s nimi používatelia interagujú. Jasné a stručné uvedenie príčiny chyby tiež dáva používateľom prehľad o tom, čo robia zle, a niekedy ich nasmeruje správnym smerom.

Email
Ako ladiť kód Pythonu

Vybavte sa know-how na potlačenie každej chyby Pythonu, ktorá vám bude v ceste.

Prečítajte si Ďalej

Súvisiace témy
  • Programovanie
  • Python
  • Výukové programy pre kódovanie
O autorovi
Idowu Omisola (Publikovaných 82 článkov)

Idowu je vášnivý pre čokoľvek inteligentné technológie a produktivitu. Vo voľnom čase sa hrá s kódovaním a keď sa nudí, prepne na šachovnicu, ale tiež rád občas vybočuje z rutiny. Jeho vášeň ukázať ľuďom cestu v moderných technológiách ho motivuje k tomu, aby písal viac.

Viac od Idowu Omisola

Prihlásiť sa ku odberu noviniek

Pripojte sa k nášmu bulletinu s technickými tipmi, recenziami, bezplatnými elektronickými knihami a exkluzívnymi ponukami!

Ešte jeden krok…!

V e-maile, ktorý sme vám práve poslali, potvrďte svoju e-mailovú adresu.

.