Python-virheet ja sisäänrakennetut poikkeukset

Tässä opetusohjelmassa opit erityyppisistä virheistä ja poikkeuksista, jotka on sisäänrakennettu Pythoniin. Ne nostetaan aina, kun Python-tulkki havaitsee virheitä.

Video: Python-poikkeusten käsittely

Voimme tehdä tiettyjä virheitä kirjoittaessamme ohjelmaa, jotka johtavat virheisiin, kun yritämme suorittaa sen. Python-ohjelma päättyy heti, kun se havaitsee käsittelemättömän virheen. Nämä virheet voidaan yleisesti jakaa kahteen luokkaan:

  1. Syntaksivirheet
  2. Loogiset virheet (poikkeukset)

Python-syntaksivirheet

Virhettä, joka johtuu kielen oikean rakenteen (syntaksin) noudattamatta jättämisestä, kutsutaan syntaksivirheeksi tai jäsentämisvirheeksi .

Katsotaanpa yhtä esimerkkiä:

 >>> if a < 3 File "", line 1 if a < 3 SyntaxError: invalid syntax

Kuten esimerkissä on esitetty, nuoli osoittaa, mihin jäsennin osui syntaksivirheeseen.

Voimme huomata :, että iflausunnossa puuttuu kaksoispiste .

Pythonin loogiset virheet (poikkeukset)

Suorituksen aikana (syntaksitestin läpäisyn jälkeen) esiintyviä virheitä kutsutaan poikkeuksiksi tai loogisiksi virheiksi .

Esimerkiksi niitä esiintyy, kun yritämme avata tiedoston (lukemista varten), jota ei ole ( FileNotFoundError), yritämme jakaa luku nollalla ( ZeroDivisionError) tai yrittää tuoda moduulia, jota ei ole ( ImportError).

Aina kun tällaisia ​​ajonaikaisia ​​virheitä esiintyy, Python luo poikkeusobjektin. Jos sitä ei käsitellä oikein, se tulostaa jäljen tälle virheelle sekä joitakin yksityiskohtia siitä, miksi virhe tapahtui.

Katsotaanpa, kuinka Python kohtelee näitä virheitä:

 >>> 1 / 0 Traceback (most recent call last): File "", line 301, in runcode File "", line 1, in ZeroDivisionError: division by zero >>> open("imaginary.txt") Traceback (most recent call last): File "", line 301, in runcode File "", line 1, in FileNotFoundError: (Errno 2) No such file or directory: 'imaginary.txt'

Pythonin sisäiset poikkeukset

Laiton toiminta voi aiheuttaa poikkeuksia. Pythonissa on paljon sisäänrakennettuja poikkeuksia, jotka nostetaan vastaavien virheiden tapahtuessa. Voimme tarkastella kaikkia sisäänrakennettuja poikkeuksia sisäänrakennetun local()toiminnon avulla seuraavasti:

 print(dir(locals()('__builtins__')))

locals()('__builtins__')palauttaa sisäänrakennettujen poikkeusten, toimintojen ja määritteiden moduulin. dirantaa meille mahdollisuuden luetella nämä määritteet merkkijonoina.

Jotkut yleisistä sisäänrakennetuista Python-ohjelmoinnin poikkeuksista sekä niitä aiheuttavat virheet on lueteltu alla:

Poikkeus Virheen syy
AssertionError Nostetaan, kun assertlausunto epäonnistuu.
AttributeError Korotetaan, kun määritteen määritys tai viite epäonnistuu.
EOFError Korotetaan, kun input()toiminto osuu tiedoston lopun tilaan.
FloatingPointError Nostetaan, kun liukulukuoperaatio epäonnistuu.
GeneratorExit Nosta, kun close()kutsutaan generaattorin menetelmää.
ImportError Nostetaan, kun tuotua moduulia ei löydy.
IndexError Korotetaan, kun sekvenssin indeksi on alueen ulkopuolella.
KeyError Nostetaan, kun avainta ei löydy sanakirjasta.
KeyboardInterrupt Korotetaan, kun käyttäjä osuu keskeytysavaimeen ( Ctrl+Ctai Delete).
MemoryError Nostetaan, kun toiminnon muisti loppuu.
NameError Nostetaan, kun muuttujaa ei löydy paikallisesta tai globaalista laajuudesta.
NotImplementedError Kasvatettu abstrakteilla menetelmillä.
OSError Korotettu, kun järjestelmän toiminta aiheuttaa järjestelmään liittyvän virheen.
OverflowError Korotetaan, kun aritmeettisen operaation tulos on liian suuri edustettavaksi.
ReferenceError Nostetaan, kun heikkoa referenssipalvelinta käytetään jätteen keräämään referenssiin pääsemiseksi.
RuntimeError Korotetaan, kun virhe ei kuulu mihinkään muuhun luokkaan.
StopIteration next()Toiminnon avulla korotettu ilmaisemaan, että iteraattori ei enää palauta tuotetta.
SyntaxError Parseri nosti syntaksivirheen.
IndentationError Nostetaan, kun sisennys on väärä.
TabError Nostetaan, kun sisennys koostuu epäjohdonmukaisista välilehdistä ja välilyönneistä.
SystemError Korotettu, kun tulkki havaitsee sisäisen virheen.
SystemExit Korotettu sys.exit()toiminnolla.
TypeError Korotetaan, kun toimintoa tai toimintoa käytetään vääräntyyppiseen kohteeseen.
UnboundLocalError Korotetaan, kun viitataan paikalliseen muuttujaan toiminnossa tai menetelmässä, mutta mitään muuttujaa ei ole sidottu.
UnicodeError Nostetaan, kun tapahtuu Unicode-koodaus- tai dekoodausvirhe.
UnicodeEncodeError Nostetaan, kun koodauksen aikana tapahtuu Unicode-virhe.
UnicodeDecodeError Nostetaan, kun dekoodauksen aikana tapahtuu Unicode-virhe.
UnicodeTranslateError Nostetaan, kun käännöksen aikana tapahtuu Unicode-virhe.
ValueError Korotetaan, kun funktio saa oikean tyyppisen mutta väärän arvon argumentin.
ZeroDivisionError Korotetaan, kun toinen jako- tai modulo-operaatio on nolla.

Tarvittaessa voimme määritellä myös omat poikkeuksemme Pythonissa. Lisätietoja niistä on Python-käyttäjän määrittelemissä poikkeuksissa.

Voimme käsitellä näitä sisäänrakennettu ja käyttäjän määrittämiä poikkeuksia Python avulla try, exceptja finallylausuntoja. Jos haluat lisätietoja niistä, käy Python-kokeiluprosessissa paitsi lopuksi lausunnoissa.

Mielenkiintoisia artikkeleita...