Python Erandi käsitlemine: proovige, püüdke, lõpuks ja tõstke [näide]

Mis on erandi käsitlemine Python?

Erandiks on tõrge, mis ilmneb programmi täitmise ajal. Programmi käitades aga Python loob erandi, mida tuleks käsitleda, et vältida programmi kokkujooksmist. sisse Python keeles, erandid käivituvad vigade korral automaatselt või võivad need käivitada ja teie kood kinni pidada.

Erand näitab, et kuigi sündmus võib juhtuda, juhtub seda tüüpi sündmusi harva. Kui meetod ei saa erandiga hakkama, suunatakse see helistaja funktsioonile. Lõpuks, kui erand põhifunktsioonist välja visatakse, lõpetatakse programm järsult.

Üldised näited eranditest

  • Jagamine nulliga
  • Juurdepääs failile, mida pole olemas.
  • Kahe kokkusobimatu tüübi lisamine
  • Püüab juurde pääseda jada olematule registrile
  • Tabeli eemaldamine lahtiühendatud andmebaasiserverist.
  • Sularahaautomaadist väljavõtmine suurem kui saadaolev summa

Miks peaksite kasutama erandeid?

Siin on erandite kasutamise põhjused Python:

  • Erandite käsitlemine võimaldab teil eraldada veakäsitluse koodi tavalisest koodist.
  • Erandiks on a Python objekt mis tähistab viga.
  • Nagu koodikommentaaride puhul, aitavad erandid teile meelde tuletada, mida programm ootab.
  • See täpsustab koodi ja parandab loetavust.
  • Võimaldab stimuleerida tagajärgi, kuna vigade käsitlemine toimub ühes kohas ja ühel viisil.
  • Erandiks on mugav viis veateadete käsitlemiseks.
  • In Python, saate programmis erandi tõsta, kasutades erandi tõstmise meetodit.
  • Erandi tõstmine aitab teil praegust koodi käitamist katkestada ja tagastab erandi ootuspärasele tasemele, kuni seda käsitletakse.
  • Töötleme erandeid komponentidele, mis ei saa nendega otse käsitseda.

Erandite reeglid

Siin on mõned olulised reeglid Python erandite käsitlemine:

  • Erandid peavad olema klassiobjektid
  • Klassi erandite puhul võite kasutada lauset try koos välja arvatud klausliga, mis mainib konkreetset klassi.
  • Isegi kui lause või avaldis on süntaktiliselt õige, võib see kuvada veateate, kui seda proovitakse täita.
  • Täitmise käigus leitud vigu nimetatakse eranditeks ja need ei ole tingimusteta saatuslikud.

Python Erandi käsitlemise mehhanism

Erandi käsitlemist juhivad järgmised 5 märksõna:

  1. püüdma
  2. saak
  3. lõpuks
  4. viskama

Python Proovi avaldust

Proovilause sisaldab märksõna try, millele järgneb koolon (:) ja koodikomplekt, milles võivad esineda erandid. Sellel on üks või mitu klauslit.

Kui try-lause täitmisel erandeid ei esinenud, ignoreerib tõlk selle konkreetse proovilause erandikäsitlejaid.

Juhul, kui proovikomplektis ilmneb mõni erand, siis proovikomplekt aegub ja programmi juhtimine kandub proovikomplekti järgivale sobivusele, välja arvatud töötlejale.

Syntax:
try:
statement(s)

Püügi avaldus

Püügiplokid võtavad korraga ühe argumendi, mis on seda tüüpi erand, mille see tõenäoliselt tabab. Need argumendid võivad ulatuda konkreetset tüüpi eranditest, mida saab muuta, kuni kõikehõlmava erandite kategooriani.

Püügiploki reeglid:

  • Püügiploki saate määratleda märksõna püüdmise abil
  • Catch Exception parameeter on alati sulgudes
  • See tähistab alati seda tüüpi erandit, mida püüdmisplokk käsitleb.
  • Erandi käsitlemise kood kirjutatakse kahe {} lokkis sulgu vahele.
  • Ühe prooviploki sisse saate paigutada mitu püüdmisplokki.
  • Püügiplokki saab kasutada alles pärast prooviblokki.
  • Kõik püüdmisplokid tuleks järjestada alamklassist superklassi erandini.

Näide:

try
}
catch (ArrayIndexOutOfBoundsException e) {
System.err.printin("Caught first " + e.getMessage()); } catch (IOException e) {
System.err.printin("Caught second " + e.getMessage());
}

Lõpuks avaldus sisse Python

Lõpuks toimib plokk alati, olenemata sellest, kas erand tehakse või mitte. Viimane märksõna võimaldab teil luua koodiploki, mis järgneb proovivõtuplokile.

Lõpuks on klausel vabatahtlik. Selle eesmärk on määratleda puhastustoimingud, mis tuleks läbi viia kõigis tingimustes.

try:
    raise KeyboardInterrupt
finally:
    print 'welcome, world!'
Output
Welcome, world!
KeyboardInterrupt

Lõpuks täidetakse klausel enne try-lauset.

Tõstke avaldus sisse Python

Tõstelause määrab argumendi, mis initsialiseerib erandiobjekti. Siin järgneb erandi nimele koma ja komale järgneva argumendi argument või korteež.

süntaksit:

raise [Exception [, args [, traceback]]]

Selles süntaksis on argument valikuline ja täitmise ajal on erandi argumendi väärtus alati ükski.
Näide:
A Python erand võib olla mis tahes väärtus, näiteks string, klass, arv või objekt. Enamik neist eranditest, mis on tõstatatud Python core on klassid argumendiga, mis on klassi eksemplar.

oluline Python vead

Veatüüp Kirjeldus
Aritmeetiline viga ArithmeticError toimib kõigi aritmeetiliste erandite baasklassina. Seda tõstetakse aritmeetiliste tehete vigade korral.
Impordiviga ImportError kuvatakse, kui proovite importida moodulit, mida ei kuvata. Selline erand ilmneb siis, kui olete teinud mooduli nimes või moodulis, mida standardteel pole, kirjutamisvea.
Indeksi viga IndexErroris kuvatakse, kui proovite viidata jadale, mis on vahemikust väljas.
KeyError Kui konkreetset võtit sõnastikust ei leita, kuvatakse erand KeyError.
NameError NameError kuvatakse, kui nimele viidatakse koodis, mida kohalikus või globaalses nimeruumis kunagi ei eksisteeri.
ValueError Väärtuse viga tekib siis, kui funktsioon või sisseehitatud toiming saab argumendi, mis võib olla õiget tüüpi, kuid millel pole sobivat väärtust.
EOFerror Selline viga ilmneb siis, kui üks sisseehitatud funktsioonidest (input() või raw_input()) jõuab EOF-i tingimuseni ilma andmeid lugemata.
ZeroDivisonError Seda tüüpi viga, mis ilmneb nulliga jagamisel või moodulimisel kõigi numbritüüpide puhul.
IOError- Selline tõrge, mis ilmneb sisend-/väljundtoimingu nurjumisel.
süntaksi viga Süntaksivead, mis tekivad, kui failis on viga Python süntaks
Identification Error See viga ilmneb, kui taane pole õigesti määratletud

Muu Tähtis Python Erandeid

Erand Kirjeldus
AritmeetikaErand Aritmeetiline viga, nt nulliga jagamine.
ArraylndexOutOfBoundsException Massiiviindeks on piiridest väljas.
ArrayStoreException Määramine aitab teil ühildumatut tüüpi massiivi elementi.
ClassCastException Vale ülekandmine
MlegalMonitorStateException Ebaseaduslik monitori kasutamine, nagu lukustamata lõime ootamine.
MlegalStateException Keskkond või rakendus on vales olekus.
ClassNotFoundException Klassi ei leitud.
CloneNotSupportedException Proovige kloonida objekti, mis ei rakenda klooneeritavat liidest.
Ebaseadusliku juurdepääsu erand Juurdepääs klassile on keelatud.
InstantiatsiooniErand Esineb siis, kui proovite luua liidese või abstraktse klassi objekti.
CloneNotSupportedException Proovige kloonida objekti, mis liidest ei rakenda.

Viga vs erandid

viga Erandeid
Kõik vead sees Python on märkimata tüüp. Erandid hõlmavad nii märgistatud kui ka märkimata tüüpi.
Käitusajal ilmnevad vead, mis pole kompilaatorile teada. Erandeid saab taastada, kui käsitleda neid try-catch plokkide abil.
Vead on enamasti põhjustatud keskkonnast, milles rakendus töötab. Rakendus ise põhjustab erandeid.
Näited:
OutofMemory Error
Näited:
Kontrollitud erandid, SQL-i erand, NullPointerException jne.

kokkuvõte

  • Erandiks on tõrge, mis ilmnes programmi täitmise ajal.
  • Erand näitab, et kuigi sündmus võib juhtuda, juhtub seda tüüpi sündmusi harva.
  • Levinud näited eranditest on 1) nulliga jagamine, 2) failile juurdepääs, mida pole olemas, 3) kahe ühildumatu tüübi lisamine.
  • Erandiks on a Python objekt, mis tähistab viga.
  • Proovilause sisaldab märksõna try, millele järgneb koolon (:) ja koodikomplekt, milles võivad esineda erandid. Sellel on üks või mitu klauslit.
  • Püügiplokid võtavad korraga ühe argumendi, mis on seda tüüpi erand, mille see tõenäoliselt tabab.
  • Tõstelause määrab argumendi, mis initsialiseerib erandiobjekti.
  • Lõpuks toimib blokk alati, olenemata sellest, kas erand tehakse või mitte.