Pythoni erandite käsitlemine: proovige, püüdke, lõpuks

Lang L: none (table-of-contents):

Anonim

Mis on Pythoni erand?

Erandiks on viga, mis juhtub programmi käivitamisel. Programmi käitamise ajal genereerib Python siiski erandi, mida tuleks käsitleda, et vältida teie programmi kokkukukkumist. Pythoni keeles käivitavad erandid vead automaatselt või võivad need teie kood käivitada ja kinni pidada.

Erand näitab, et kuigi sündmus võib juhtuda, juhtub seda tüüpi sündmusi harva. Kui meetod ei suuda erandit käsitleda, visatakse see oma helistajafunktsiooni. Lõpuks, kui erand põhifunktsioonist välja visatakse, lõpetatakse programm järsult.

Selles Pythoni erakordses käsitsemisõpetuses saate teada:

  • Mis on Pythoni erand?
  • Erandite tavalised näited
  • Miks peaksite kasutama erandeid?
  • Erandite reeglid
  • Erakordne käitlemismehhanism
    • Proovige avaldust
    • Püügiaruanne
    • Tõuse avaldus
  • Olulised Pythoni vead
  • Muud olulised Pythoni erandid
  • Viga vs erandid

Erandite tavalised näited:

  • Nulliga jagamine
  • Juurdepääs failile, mida pole olemas.
  • Kahe kokkusobimatu tüübi lisamine
  • Püütakse juurde pääseda jada olematule indeksile
  • Tabeli eemaldamine lahtiühendatud andmebaasiserverist.
  • Sularahaautomaadi väljavõtmine rohkem kui saadaval olev summa

Miks peaksite kasutama erandeid?

Siin on Pythonis erandite kasutamise põhjused:

  • Erandkäsitlus võimaldab teil veakäsitluskoodi eraldada tavalisest koodist.
  • Erandiks on Pythoni objekt, mis tähistab viga.
  • Nagu koodikommentaaride puhul, aitavad ka erandid meelde tuletada, mida programm ootab.
  • See selgitab koodi ja parandab loetavust.
  • Võimaldab stimuleerida tagajärgi, kuna vigade käsitlemine toimub ühes kohas ja ühel viisil.
  • Erand on mugav meetod veateadete käsitlemiseks.
  • Pythonis saate programmis erandi tõsta, kasutades tõstmise erandi meetodit.
  • Erandi suurendamine aitab teil praeguse koodi täitmise katkestada ja tagastab erandi tagasi ootesse, kuni see on käsitletud.
  • Töötatakse erandeid komponentidele, mis ei saa nendega otse hakkama.

Erandite reeglid

Siin on mõned Pythoni erandite käsitlemise olulised reeglid:

  • Erandiks peavad olema klassiobjektid
  • Klasside erandite jaoks võite kasutada proovilauset koos erandlausega, mis mainib konkreetset klassi.
  • Isegi kui lause või avaldis on süntaktiliselt õige, võib see kuvada tõrke, kui seda üritatakse täita.
  • Hukkamise käigus leitud vigu nimetatakse eranditeks ja need ei ole tingimusteta surmavad.

Erakordne käitlemismehhanism

Erandite haldamist haldavad järgmised 5 märksõna:

  1. proovige
  2. saak
  3. lõpuks
  4. viskama

Proovige avaldust

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

Kui proovivõtte käivitamise ajal erandeid ei toimunud, ignoreerib tõlk selle konkreetse proovilause eranditöötlejaid.

Juhul, kui proovikomplektis esineb mõni erand, aegub proovikomplekt ja programmi juhtimine läheb vastavusse, välja arvatud proovikomplekti järgiv käitleja.

Syntax:try:statement(s)

Püügiaruanne

Püüdmisblokid võtavad korraga ühe argumendi, mis on seda tüüpi erand, mille ta tõenäoliselt tabab. Need argumendid võivad ulatuda konkreetsest erandiliigist, mida saab muuta kõikehõlmavate erandite kategooriasse.

Püügiploki reeglid:

  • Püügiploki saate määratleda märksõna saak abil
  • Saagi erandi parameeter on alati sulgudes
  • See tähistab alati eranditüüpi, mida püüdeplokk käsitseb.
  • Erandi käitlemise kood on kirjutatud kahe {} lokkis klambri vahele.
  • Ühes proovimisplokis saate paigutada mitu püüdmisplokki.
  • Püügiplokki saab kasutada alles pärast prooviblokki.
  • Kogu püüdmisplokk tuleks tellida alamklassist superklasside 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 blokeeri

Lõpuks blokeeritakse alati, olenemata visatud erandist. Lõplik märksõna võimaldab teil luua koodiploki, mis järgib proovimise püüdmise plokki.

Lõpuks on klausel vabatahtlik. Selle eesmärk on määratleda puhastustoimingud, mis peaksid toimuma kõikides tingimustes.

try:raise KeyboardInterruptfinally:print 'welcome, world!'OutputWelcome, world!KeyboardInterrupt

Lõpuks, enne proovilause täitmist täidetakse klausel.

Tõuse avaldus

Tõstelause määrab argumendi, mis lähtestab erandi objekti. Siin järgneb komale erandi nimi ja komale järgnev argument või argument.

Süntaks:

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

Selles süntaksis on argument valikuline ja täitmise ajal pole erandi argumendi väärtus alati ükski.

Näide:

Pythoni erand võib olla mis tahes väärtus, näiteks string, klass, arv või objekt. Enamik neist Pythoni tuuma tõstatatud eranditest on klassid, mille argument on klassi eksemplar.

Olulised Pythoni vead

Veatüüp Kirjeldus
Aritmeetiline viga ArithmeticError toimib kõigi aritmeetiliste erandite baasklassina. Seda tõstatatakse aritmeetiliste toimingute vigade korral.
ImportError ImportError tõstetakse üles, kui proovite importida moodulit, mida pole. Selline erand ilmneb juhul, kui olete teinud mooduli nimes või moodulis, mida standardteel pole, tippimisvea.
IndexError IndexErroris kerkib ülespoole jääva järjestuse viitamisel.
KeyError Kui konkreetset võtit sõnastikust ei leia, tõstetakse KeyError'i erand.
NimiViga NimiViga tõuseb, kui nimele viidatakse koodis, mida kohalikus või globaalses nimeruumis kunagi pole.
ValueError Väärtusviga tekib siis, kui funktsioon või sisseehitatud operatsioon saab argumendi, mis võib olla õige tüüp, kuid millel pole sobivat väärtust.
EOFerror Selline viga tekib siis, kui üks sisseehitatud funktsioonidest (input () või raw_input ()) jõuab andmeid lugemata EOF-i tingimuseni.
ZeroDivisonError Seda tüüpi viga, mis tekib siis, kui jagamine või moodul nulliga toimub kõigi numbrite tüüpide korral.
IOError- Selline tõrge ilmnes sisendi / väljundi nurjumisel.
süntaksViga SyntaxVead ilmnesid, kui Pythoni süntaksis oli viga.
TaaneViga See viga ilmnes siis, kui taane pole õigesti määratletud

Muud olulised Pythoni erandid

Erand Kirjeldus
AritmeetikaErand Aritmeetiline viga, näiteks jagamine nulliga.
ArraylndexOutOfBoundsException Massiivide indeks on väljaspool piire.
ArrayStoreException Määramine aitab teil sobimatut tüüpi massiivi elementi.
ClassCastException Vale ülekanne
MlegalMonitorStateException Monitori ebaseaduslik toimimine, nagu lukustamata niidil ootamine.
MlegalStateException Keskkond või rakendus on vales olekus.
ClassNotFoundException Kursust ei leitud.
CloneNotSupportedException Proovige kloonida objekti, mis ei kasuta liidest Cloneable.
Ebaseaduslik juurdepääsuväli Kursusele juurdepääs keelatakse.
InstantiationException Ilmneb siis, kui proovite luua liidese või abstraktse klassi objekti.
CloneNotSupportedException Proovige kloonida objekti, mis ei kasuta liidest.

Viga vs erandid

Viga Erandid
Kõik Pythoni vead on kontrollimata tüüp. Erandid hõlmavad nii kontrollitud kui ka kontrollimata tüüpi.
Viga ilmub käitamise ajal, mis kompilaatorile ei olnud teada. Erandeid on võimalik taastada, kui neid proovida püüdmisplokkide abil.
Vead on enamasti põhjustatud keskkonnast, kus rakendus töötab. Rakendus ise põhjustab erandeid.
Näited: OutofMemoryError Näited: kontrollitud erandid, SQL-i erand, NullPointerException jne.

Kokkuvõte

  • Erandiks on viga, mis juhtus programmi käivitamisel.
  • Erand näitab, et kuigi sündmus võib juhtuda, juhtub seda tüüpi sündmusi harva.
  • Tavalised erandinäited on 1) jagamine nulliga, 2) juurdepääs failile, mida pole olemas, 3) kahe ühildumatu tüübi lisamine.
  • Erandiks on Pythoni objekt, mis tähistab viga.
  • Proovilause sisaldab märksõna try, millele järgneb koolon (:) ja koodikomplekt, milles võib esineda erandeid. Sellel on üks või mitu klauslit.
  • Püüdmisblokid võtavad korraga ühe argumendi, mis on seda tüüpi erand, mille ta tõenäoliselt tabab.
  • Tõstelause määrab argumendi, mis lähtestab erandi objekti.
  • Lõpuks, blokeerimine toimub alati olenemata visatud erandist.