Python Poikkeuskäsittely: kokeile, saa kiinni, lopulta ja nosta [esimerkki]

Mitä poikkeuskäsittely tarkoittaa Python?

Poikkeus on virhe, joka tapahtuu ohjelman suorituksen aikana. Ohjelmaa suoritettaessa Python luo poikkeuksen, joka tulee käsitellä, jotta ohjelma ei kaatuisi. sisään Python poikkeukset käynnistyvät automaattisesti virheiden yhteydessä, tai koodisi voi laukaista ja siepata ne.

Poikkeus osoittaa, että vaikka tapahtuma voi tapahtua, tämän tyyppisiä tapahtumia tapahtuu harvoin. Kun menetelmä ei pysty käsittelemään poikkeusta, se siirretään kutsujatoimintoonsa. Lopulta, kun poikkeus heitetään pois päätoiminnosta, ohjelma lopetetaan äkillisesti.

Yleisiä esimerkkejä poikkeuksista

  • Nollalla jakaminen
  • Pääsy tiedostoon, jota ei ole olemassa.
  • Kahden yhteensopimattoman tyypin lisäys
  • Yritetään käyttää sekvenssin olematonta hakemistoa
  • Taulukon poistaminen katkaistusta tietokantapalvelimesta.
  • Pankkiautomaatin nosto yli käytettävissä olevan summan

Miksi sinun pitäisi käyttää poikkeuksia?

Tässä ovat syyt poikkeuksien käyttämiseen Python:

  • Poikkeuskäsittelyn avulla voit erottaa virheenkäsittelykoodin normaalista koodista.
  • Poikkeuksena on a Python objekti joka edustaa virhettä.
  • Kuten koodikommenttien kohdalla, poikkeukset auttavat sinua muistuttamaan itseäsi siitä, mitä ohjelma odottaa.
  • Se selkeyttää koodia ja parantaa luettavuutta.
  • Voit stimuloida seurauksia, koska virheiden käsittely tapahtuu yhdessä paikassa ja yhdellä tavalla.
  • Poikkeus on kätevä tapa käsitellä virheilmoituksia.
  • In Python, voit nostaa poikkeuksen ohjelmassa käyttämällä nosta poikkeustapaa.
  • Poikkeuksen nostaminen auttaa sinua katkaisemaan nykyisen koodin suorituksen ja palauttaa poikkeuksen takaisin odotukseen, kunnes se on käsitelty.
  • Käsitellään poikkeuksia komponenteille, jotka eivät voi käsitellä niitä suoraan.

Poikkeussäännöt

Tässä on joitain olennaisia ​​sääntöjä Python poikkeusten käsittely:

  • Poikkeusten on oltava luokkaobjekteja
  • Luokkapoikkeuksissa voit käyttää try-lausetta, jossa on paitsi-lause, joka mainitsee tietyn luokan.
  • Vaikka lause tai lauseke olisi syntaktisesti oikein, se voi näyttää virheilmoituksen, kun sitä yritetään suorittaa.
  • Suorituksen aikana löydettyjä virheitä kutsutaan poikkeuksiksi, eivätkä ne ole ehdottoman kohtalokkaita.

Python Poikkeuskäsittelymekanismi

Poikkeuskäsittelyä hallitaan seuraavilla viidellä avainsanalla:

  1. yrittää
  2. saalis
  3. vihdoin
  4. heittää

Python Kokeile lausuntoa

Try-lause sisältää avainsanan try, jota seuraa kaksoispiste (:) ja koodisarja, jossa voi esiintyä poikkeuksia. Siinä on yksi tai useampi lauseke.

Jos try-käskyn suorittamisen aikana ei tapahtunut poikkeuksia, tulkki jättää huomioimatta kyseisen try-käskyn poikkeuskäsittelijät.

Jos try suitessa tapahtuu jokin poikkeus, try suite vanhenee ja ohjelman ohjaus siirtyy try suitea seuraavalle sovittajalle paitsi käsittelijälle.

Syntax:
try:
statement(s)

Saaliin lausunto

Catch-lohkot ottavat yhden argumentin kerrallaan, mikä on poikkeuksen tyyppi, jonka se todennäköisesti saa kiinni. Nämä argumentit voivat vaihdella tietyntyyppisestä poikkeuksesta, jota voidaan muunnella, yleiseen poikkeusluokkaan.

Catch-lohkon säännöt:

  • Voit määrittää catch-lohkon käyttämällä avainsanaa catch
  • Catch Exception -parametri on aina sulkeissa
  • Se edustaa aina poikkeuksen tyyppiä, jota catch block käsittelee.
  • Poikkeuskäsittelykoodi kirjoitetaan kahden {} aaltosulkeen väliin.
  • Voit sijoittaa useita kiinnityslohkoja yhden try-lohkon sisään.
  • Voit käyttää catch-lohkoa vasta try-lohkon jälkeen.
  • Kaikki catch-lohkot tulee tilata alaluokista superluokkapoikkeuksiin.

Esimerkiksi:

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

Lopuksi lausunto Python

Lopuksi lohko suoritetaan aina riippumatta siitä, heitetäänkö poikkeus vai ei. Viimeisen avainsanan avulla voit luoda koodilohkon, joka seuraa try-catch -lohkoa.

Lopuksi lauseke on valinnainen. Sen tarkoituksena on määritellä puhdistustoimet, jotka tulee suorittaa kaikissa olosuhteissa.

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

Lopuksi lause suoritetaan ennen try-lausetta.

Nosta lausunto sisään Python

Raise-käsky määrittää argumentin, joka alustaa poikkeusobjektin. Tässä poikkeuksen nimeä seuraa pilkku ja pilkkua seuraavan argumentin argumentti tai monikko.

Syntaksi:

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

Tässä syntaksissa argumentti on valinnainen, ja suoritushetkellä poikkeusargumentin arvo on aina ei mitään.
Esimerkiksi:
A Python poikkeus voi olla mikä tahansa arvo, kuten merkkijono, luokka, numero tai objekti. Suurin osa näistä poikkeuksista on esitetty Python ydin ovat luokkia, joiden argumentti on luokan esiintymä.

Tärkeä Python virheet

Virhetyyppi Tuotetiedot
Aritmeettinen virhe ArithmeticError toimii perusluokkana kaikille aritmeettisille poikkeuksille. Se nostetaan aritmeettisten operaatioiden virheiden varalta.
Tuontivirhe ImportError ilmestyy, kun yrität tuoda moduulia, joka ei näy. Tällainen poikkeus tapahtuu, jos olet tehnyt kirjoitusvirheen moduulin nimessä tai moduulissa, jota ei ole vakiopolussa.
HakemistoVirhe IndexErroris ilmestyy, kun yrität viitata sekvenssiin, joka on alueen ulkopuolella.
KeyError Kun tiettyä avainta ei löydy sanakirjasta, avautuu KeyError-poikkeus.
Nimivirhe NameError syntyy, kun nimeen viitataan koodissa, jota ei koskaan ole paikallisessa tai globaalissa nimiavaruudessa.
ValueError Arvovirhe syntyy, kun funktio tai sisäänrakennettu toiminto vastaanottaa argumentin, joka voi olla oikeaa tyyppiä, mutta jolla ei ole sopivaa arvoa.
EOFerror Tällainen virhe ilmenee, kun jokin sisäänrakennetuista funktioista (input() tai raw_input()) saavuttaa EOF-ehdon lukematta mitään tietoja.
ZeroDivisonError Tämän tyyppinen virhe ilmenee, kun jako tai moduuli nollalla tapahtuu kaikille numeerisille tyypeille.
IOError- Tällainen virhe ilmenee, kun syöttö/tulostustoiminto epäonnistuu.
syntaksivirhe SyntaxErrors ilmaantuu, kun on virhe Python syntaksi.
Identification Error Tämä virhe ilmenee, kun sisennystä ei ole määritetty oikein

Muut tärkeät Python Poikkeukset

Poikkeus Tuotetiedot
Aritmeettinen poikkeus Aritmeettinen virhe, kuten jakaminen nollalla.
ArraylndexOutOfBoundsException Array-indeksi on rajojen ulkopuolella.
ArrayStoreException Assignment auttaa sinua yhteensopimattoman tyypin taulukkoelementtiin.
ClassCastException Virheellinen cast
MlegalMonitorStateException Laiton näytön toiminta, kuten odottaminen lukitsemattomalla langalla.
MlegalStateException Ympäristö tai sovellus on väärässä tilassa.
ClassNotFoundException Luokkaa ei löydy.
CloneNotSupportedException Yritä kloonata objekti, joka ei toteuta Cloneable-liittymää.
Laiton pääsyPoikkeus Pääsy luokkaan on estetty.
InstantiationException Esiintyy, kun yrität luoda rajapinnan tai abstraktin luokan objektin.
CloneNotSupportedException Yritä kloonata objekti, joka ei toteuta käyttöliittymää.

Virhe vs. poikkeukset

Virhe Poikkeukset
Kaikki virheet sisällä Python ovat valitsematon tyyppi. Poikkeuksia ovat sekä valittu että valitsematon tyyppi.
Ajon aikana tapahtuu virheitä, joita kääntäjä ei tiedä. Poikkeukset voidaan palauttaa käsittelemällä niitä try-catch-lohkojen avulla.
Virheet johtuvat useimmiten ympäristöstä, jossa sovellus on käynnissä. Sovellus itsessään aiheuttaa poikkeuksia.
Esimerkkejä:
OutofMemory Error
Esimerkkejä:
Tarkistetut poikkeukset, SQL-poikkeus, NullPointerException jne.

Yhteenveto

  • Poikkeus on virhe, joka tapahtui ohjelman suorituksen aikana.
  • Poikkeus osoittaa, että vaikka tapahtuma voi tapahtua, tämän tyyppisiä tapahtumia tapahtuu harvoin.
  • Yleisiä esimerkkejä poikkeuksista ovat 1) jako nollalla, 2) tiedoston käyttäminen, jota ei ole olemassa, 3) kahden yhteensopimattoman tyypin lisääminen.
  • Poikkeuksena on a Python objekti, joka edustaa virhettä.
  • Try-lause sisältää avainsanan try, jota seuraa kaksoispiste (:) ja koodisarja, jossa voi esiintyä poikkeuksia. Siinä on yksi tai useampi lauseke.
  • Catch-lohkot ottavat yhden argumentin kerrallaan, mikä on poikkeuksen tyyppi, jonka se todennäköisesti saa kiinni.
  • Raise-käsky määrittää argumentin, joka alustaa poikkeusobjektin.
  • Lopuksi lohko suoritetaan aina riippumatta siitä, heitetäänkö poikkeus vai ei.