Poikkeusten käsittely on kyky mukauttaa ja näyttää virheilmoituksia ohjelman osille, jotka eivät toimi.

Rakennatpa verkkosivustoa, valmistatko sovellusliittymää, moduulia tai mitä tahansa muuta tuotetta Pythonin avulla, kykynne käsitellä poikkeuksia tehokkaasti antaa nimenomaisen virheen syyn.

Tässä tarkastellaan, miten voit käsitellä poikkeuksia Pythonissa.

Kuinka poikkeusten käsittely toimii Pythonissa

Kun nostat poikkeuksia, käsket Pythonia tuomaan viestin aina, kun koodilohko epäonnistuu. Poikkeusten käsittely on kuin käskenä jotakuta yrittämään nostaa painoa. Ja jos he eivät pysty, heidän tulisi ilmoittaa siitä sinulle.

Poikkeuksen nostamiseksi Pythonissa käsket kuitenkin Pythonia kokeilemaan tiettyä koodilohkoa. Jos kyseinen lohko epäonnistuu, voit pyytää Pythonia nostamaan määritetyn poikkeuksen epäonnistuneesta koodista.

Milloin sinun pitäisi käyttää poikkeuksia Python-ohjelmoinnissa?

Useimmissa tapauksissa voit peittää tavalliset Python-virheet poikkeuksilla. Mutta sinun on pysyttävä valppaana, koska se voi aiheuttaa virheenkorjausongelmia. Tästä syystä saatat olla vaikea selvittää mahdollisen virheen perimmäinen syy.

instagram viewer

Siksi sinun tulisi käyttää poikkeuksia, kun olet testannut koodisi riittävästi ja olet varma, että se toimii. Viime kädessä on parasta käyttää niitä käsittelemään mahdollisia vikoja, jotka saattavat johtua käyttäjän lopusta eikä itse koodista.

Toisin sanoen, voit käyttää poikkeuksia varoitustyökaluna, joka opastaa käyttäjiä käyttämään ohjelmaa.

Python-poikkeusten käsittely

Jos haluat käsitellä poikkeuksia Pythonissa, sinun on ensin pakattava koodisi a yritä... paitsi lohko. Joskus sinun on ehkä lisättävä a lopulta lauseke käsittelemään muita toimia tarpeidesi mukaan.

Python-poikkeusten koodauskonsepti näyttää yleensä tältä:

yrittää:
"suoritettava koodi"
paitsi:
"virheviesti"

Kuten aiemmin mainittiin, voit käyttää myös lopulta poikkeuslohkossa. Mutta koodi, jonka kirjoitat a lopulta lauseke on riippumaton ja toimii riippumatta siitä, onko poikkeus.

Pohjimmiltaan se on kätevä, jos sinulla on toinen koodilohko, jonka haluat suorittaa jatkuvasti riippumatta siitä, mitä tapahtuu yritä... paitsi lohko.

Tässä on esimerkki:

yrittää:
tulosta (9 + 6)
paitsi:
tulosta ("virheilmoitus")
lopuksi:
tulosta ("käynnistä uudelleen")
Tuotos:
15
Käynnistä uudelleen

Yllä olevassa koodissa Käynnistä uudelleen toimii jatkuvasti riippumatta siitä, onko poikkeusta vai ei.

An muu ehto voi myös seurata paitsi lausunto:

yrittää:
C = 2 + B
paitsi:
tulosta ("B on määriteltävä")
muu:
tulosta (u "Lisätty onnistuneesti! Tulos on% s "% (C))
Tuotos: B on määriteltävä

Yritä nyt uudelleen määrittelemällä "B":

yrittää:
B = 5
C = 2 + B
paitsi:
tulosta ("B on määriteltävä")
muu:
tulosta (u "Lisätty onnistuneesti! Tulos on% s "% (C))
Tuotos: Lisätty onnistuneesti! Tulos on 7

Edellä olevat esimerkit ovat standardoimattomia poikkeuksia. Mutta sinulla voi olla selkeämpi poikkeus, kun yhdistät sisäänrakennetut (määritellyt) poikkeukset standardoimattomiin:

yrittää:
C = 2 + B
paitsi NameError err:
tulosta (err, ":", "B on määriteltävä, kiitos")
muu:
tulosta (u "Lisätty onnistuneesti! Tulos on% s "% (C))
Tuotos: nimeä 'B' ei ole määritelty: B on määriteltävä, kiitos

Yllä oleva poikkeus tarkistaa ensin, onko NameError että yrittää lohko. Sitten se tulostaa standardin NameError poikkeus ensin ("nimeä" B "ei ole määritelty"). Ja tukee sitä kirjallisella poikkeuksellasi ("B on määriteltävä, kiitos").

Liittyvät: Ohjelmoinnin perusperiaatteet Jokaisen ohjelmoijan on tiedettävä

Ja jos haluat käsitellä ketjua poikkeuksia, voit myös liittää a yrittää estää monia paitsi lausunnot. Tämä on melko kätevä, jos yrittää lohkolla voi olla monia poikkeuksia:

yrittää:
B = 5
C = 2 + B
D = kelluva (6)
F = 7/0
paitsi NameError err:
tulosta (err, ":", "B on määriteltävä, kiitos")
paitsi ValueError kuin val:
tulosta (val, ":", "Et voi muuntaa kyseisiä tietoja")
paitsi ZeroDivisionError nollana:
tulosta (zeroerr, ":", "Et voi jakaa numeroa nollalla")
muu:
tulosta (u "Operaatio onnistui! Tulokset ovat:% s,% s ja% s "% (C, D, F))
Tuotos: jakaminen nollalla: Et voi jakaa lukua nollalla

Entä jos jako on voimassa? Esimerkiksi korvaamalla F = 7/0 yllä olevassa koodissa F = 7/5 antaa:

Tuotos: Operaatio onnistui! Tulokset ovat: 7, 6,0 ja 1,4

Käyttäjän määrittelemät poikkeukset Pythonissa

Voit myös keksiä poikkeuksesi ja soittaa heille myöhemmin ohjelmassa. Tämän avulla voit antaa tarkan kuvauksen poikkeuksestasi ja nimetä sen haluamallasi tavalla.

Jokainen käyttäjän määrittelemä poikkeus (suoraan tai epäsuorasti) tulee silti sisäänrakennetusta Poikkeus luokan Python.

Alla olevassa esimerkkikoodissa viitataan tukiasemaan Poikkeus suoraan soittamalla Suorituksenaikainen virhe siitä:

luokan yhteysvirhe (ajonaikainen virhe):
def __init __ (itse, arvo):
itsearvo = arvo
yrittää:
nosta yhteysvirhe ("Virheellinen isäntänimi")
paitsi connectionError as err:
tulosta (err.value)
Tuotos: Virheellinen isäntänimi

Ota huomioon, että yhteysvirhe, tässä tapauksessa, on käyttäjän määrittelemä luokka, jonka voit nostaa milloin tahansa, kun tarvitset sitä ohjelmassasi.

Liittyvät: Aloittelijan opas säännöllisiin lausekkeisiin Pythonilla

Voit tehdä käyttäjän määrittelemän poikkeuksen johtamalla sen suoraan Poikkeus perusluokka. Alla oleva poikkeus estää kuitenkin 5: n vähentämisen 6: sta ja kutsuu poikkeuksen suoraan perusluokasta:

luokan virheet (poikkeus):
kulkea
luokka sixFiveError (virheet):
def __init __ (itse, arvo, viesti):
itsearvo = arvo
itse viesti = viesti
yrittää:
korota sixFiveError (6-5, "Tämä alitaajuus ei ole sallittu")
paitsi sixFiveError as e:
tulosta ("Tapahtui virhe:", e. viesti)
Tuotos: Tapahtui virhe: Tätä alaosaa ei sallita

Käytännössä voit käyttää aiemmin määrittelemääsi poikkeusta kutsumalla sitä toisessa toiminnossa. Voit esimerkiksi luoda floatVirhe joka sallii vain kahden uimurin lisäämisen:

# Soita ensin peruspoikkeusluokkiin:
luokan virheet (poikkeus):
kulkea
# Seuraavaksi johda oma poikkeuksesi perusluokasta:
luokka FloatError (virheet):
def __init __ (itse, arvo, viesti):
itsearvo = arvo
itse viesti = viesti
# Luo funktio lisätäksesi kaksi kelluketta:
def addTwoFloat (a, b):
if (tyyppi (a) ja tyyppi (b))! = kelluva:
korota FloatError (a + b, "Lisättävien numeroiden on oltava kelluvia")
muu:
tulosta (a + b)
addTwoFloat (4, 7)
Tuotos: __main __. FloatError: (11, 'Lisättävien numeroiden on oltava kelluvia')

Koska olet nyt määrittänyt a KelluvaVirhe -luokassa, Python nostaa sen, jos yrität lisätä kaksi ei-float-literaalia käyttämällä addtwoFloat toiminto.

Voit tulostaa KelluvaVirhe luokka samassa Python-tiedostossa, johon olet luonut sen, jotta näet mitä tapahtuu:

tulosta (FloatError)
Tuotos:

KelluvaVirheei kuitenkaan ole sisäänrakennettu Python-poikkeus. Voit vahvistaa tämän soittamalla KelluvaVirhe toisessa tuoreessa Python-tiedostossa, johon et ole luonut tätä luokkaa:

tulosta (FloatError)
Tuotos: NameError: nimeä 'FloatError' ei ole määritelty

Saat NameError koska Python ei tunnista sitä tavallisena poikkeuksena.

Voit kokeilla itse määrittelemällä myös muita virheluokkia nähdäksesi, kuinka ne esiintyvät.

Tee Python-ohjelmistasi käyttäjäystävällisempiä poikkeuksin

Pythonissa on monia tavanomaisia ​​poikkeuksia. Mutta voit myös määritellä omasi. Ohjelman käytön helppous riippuu kuitenkin jossain määrin siitä, miten se käsittelee erilaisia ​​poikkeuksia (olipa käyttäjän määrittelemä, epäspesifinen tai vakio).

Poikkeusten avulla voit kuitenkin sanella, miten ohjelmasi pitäisi toimia, kun käyttäjät ovat vuorovaikutuksessa heidän kanssaan. Virheen syyn ilmoittaminen selkeästi ja ytimekkäästi antaa käyttäjille myös tietoa siitä, mitä he tekevät väärin, ja joskus se osoittaa heitä oikeaan suuntaan.

Sähköposti
Python-koodin virheenkorjaus

Varusta itsesi taitotiedolla, jolla voit pilata kaikki polkusi Python-virheet.

Lue seuraava

Liittyvät aiheet
  • Ohjelmointi
  • Python
  • Koodausoppaat
Kirjailijasta
Idowu Omisola (82 artikkelia julkaistu)

Idowu on intohimoisesti kaikesta älykkäästä tekniikasta ja tuottavuudesta. Vapaa-ajallaan hän leikkii koodauksella ja vaihtaa shakkilautaan, kun hän on tylsistynyt, mutta rakastaa myös irtautumista rutiinista silloin tällöin. Hänen intohimonsa osoittaa ihmisille tien ympäri nykytekniikkaa motivoi häntä kirjoittamaan enemmän.

Lisää Idowu Omisolasta

Tilaa uutiskirjeemme

Liity uutiskirjeeseemme, jossa on teknisiä vinkkejä, arvosteluja, ilmaisia ​​e-kirjoja ja erikoistarjouksia!

Vielä yksi askel !!!

Vahvista sähköpostiosoitteesi juuri lähettämässäsi sähköpostiviestissä.

.