Mikä on poikkeus Pythonissa?
Poikkeuksena on virhe, joka tapahtuu ohjelman suorituksen yhteydessä. Ohjelman suorituksen aikana Python kuitenkin luo poikkeuksen, joka tulisi käsitellä, jotta ohjelma ei kaatuu. Python-kielellä poikkeukset käynnistyvät automaattisesti virheiden yhteydessä, tai koodisi voi laukaista ja siepata ne.
Poikkeus osoittaa, että vaikka tapahtuma voi tapahtua, tämän tyyppinen tapahtuma tapahtuu harvoin. Kun menetelmä ei kykene käsittelemään poikkeusta, se heitetään soittajatoimintoonsa. Lopulta, kun poikkeus heitetään pois päätoiminnosta, ohjelma lopetetaan äkillisesti.
Tässä Pythonin poikkeuksellisessa käsittelyoppaassa opit:
- Mikä on poikkeus Pythonissa?
- Yleisiä esimerkkejä poikkeuksista
- Miksi sinun pitäisi käyttää poikkeuksia?
- Poikkeusten säännöt
- Poikkeuksellinen käsittelymekanismi
- Kokeile lausunto
- Saalislausunto
- Nosta lausunto
- Tärkeitä Python-virheitä
- Muita tärkeitä Python-poikkeuksia
- Virhe vs. poikkeukset
Yleisiä esimerkkejä poikkeuksista:
- Nollalla jakaminen
- Pääsy tiedostoon, jota ei ole olemassa.
- Kahden yhteensopimattoman tyypin lisääminen
- Yritetään käyttää sekvenssin olematonta hakemistoa
- Taulukon poistaminen katkaistusta tietokantapalvelimesta.
- Pankkiautomaatin nostaminen yli käytettävissä olevan määrän
Miksi sinun pitäisi käyttää poikkeuksia?
Tässä on syitä poikkeusten käyttämiseen Pythonissa:
- Poikkeusten käsittelyn avulla voit erottaa virhekäsittelykoodin normaalista koodista.
- Poikkeuksena on Python-objekti, joka edustaa virhettä.
- Kuten koodikommenteissa, poikkeukset auttavat muistuttamaan itseäsi siitä, mitä ohjelma odottaa.
- Se selkeyttää koodia ja parantaa luettavuutta.
- Voit stimuloida seurauksia, koska virheiden käsittely tapahtuu yhdessä paikassa ja samalla tavalla.
- Poikkeus on kätevä tapa käsitellä virheilmoituksia.
- Pythonissa voit nostaa poikkeuksen ohjelmassa käyttämällä korotuksen poikkeustapaa.
- Poikkeuksen nostaminen auttaa rikkomaan nykyisen koodin suorituksen ja palauttaa poikkeuksen takaisin odotukseen, kunnes sitä käsitellään.
- Käsitellään poikkeuksia komponenteille, jotka eivät pysty käsittelemään niitä suoraan.
Poikkeusten säännöt
Tässä on joitain keskeisiä sääntöjä Python-poikkeusten käsittelystä:
- Poikkeuksena on oltava luokan objektit
- Luokan poikkeuksille voit käyttää try-lausetta poikkeuslausekkeella, joka mainitsee tietyn luokan.
- Vaikka lause tai lauseke olisi syntaktisesti oikea, se saattaa näyttää virheen, kun sitä yritetään suorittaa.
- Suorituksen aikana löydettyjä virheitä kutsutaan poikkeuksiksi, eivätkä ne ole ehdoitta kohtalokkaita.
Poikkeuksellinen käsittelymekanismi
Poikkeusten käsittelyä hallitaan seuraavilla viidellä avainsanalla:
- yrittää
- ottaa kiinni
- lopulta
- heittää
Kokeile lausunto
Kokeilulauseke sisältää avainsanayrityksen, jota seuraa kaksoispiste (:) ja koodisarja, jossa voi esiintyä poikkeuksia. Siinä on yksi tai useampi lauseke.
Jos yhtään poikkeusta ei tapahtunut try-käskyn suorittamisen aikana, tulkki jättää huomiotta kyseisen try-käskyn poikkeuskäsittelijät.
Siinä tapauksessa, että kokeilupaketissa esiintyy poikkeuksia, try-paketti vanhenee ja ohjelman hallinta siirtyy vastaavaan lukuun ottamatta try-pakettia seuraavaa käsittelijää.
Syntax:try:statement(s)
Saalislausunto
Saalislohkoissa on yksi argumentti kerrallaan, minkä tyyppisen poikkeuksen se todennäköisesti saa kiinni. Nämä argumentit voivat vaihdella tietyntyyppisestä poikkeuksesta, joka voidaan vaihdella kattavaan poikkeusluokkaan.
Saalislohkon säännöt:
- Voit määrittää saalislohkon käyttämällä avainsanaa saalis
- Saalispoikkeus-parametri on aina sulkeissa
- Se edustaa aina poikkeustyyppiä, jota salpalohko käsittelee.
- Poikkeusten käsittelykoodi on kirjoitettu kahden {} kiharan aaltosulun väliin.
- Voit sijoittaa useita saalislohkoja yhteen kokeilulohkoon.
- Voit käyttää lukituslohkoa vasta kokeilulohkon jälkeen.
- Kaikki lukituslohkot tulisi tilata alaluokasta yläluokkaan.
Esimerkki:
try}catch (ArrayIndexOutOfBoundsException e) {System.err.printin("Caught first " + e.getMessage()); } catch (IOException e) {System.err.printin("Caught second " + e.getMessage());}
Lopuksi estä
Lopuksi esto suoritetaan aina heitetystä poikkeuksesta riippumatta. Viimeisen avainsanan avulla voit luoda koodilohkon, joka seuraa kokeilunestolohkoa.
Lopuksi lauseke on valinnainen. Sen tarkoituksena on määritellä puhdistustoiminnot, jotka tulisi suorittaa kaikissa olosuhteissa.
try:raise KeyboardInterruptfinally:print 'welcome, world!'OutputWelcome, world!KeyboardInterrupt
Lopuksi lauseke suoritetaan ennen kokeilulausetta.
Nosta lausunto
Korotuslauseke määrittää argumentin, joka alustaa poikkeusobjektin. Tässä pilkku seuraa poikkeusta ja argumenttia tai pilkkua seuraavaa argumenttia.
Syntaksi:
raise [Exception [, args [, traceback]]]
Tässä syntaksissa argumentti on valinnainen, ja suoritushetkellä poikkeusargumentin arvo ei ole aina mitään.
Esimerkki:
Python-poikkeus voi olla mikä tahansa arvo, kuten merkkijono, luokka, numero tai objekti. Suurin osa näistä Python-ytimen esiin tuomista poikkeuksista on luokkia, joiden argumentti on luokan esiintymä.
Tärkeitä Python-virheitä
Virhetyyppi | Kuvaus |
Aritmeettinen virhe | ArithmeticError toimii kaikkien aritmeettisten poikkeusten perusluokkana. Se on esitetty aritmeettisten operaatioiden virheiden varalta. |
ImportError | ImportError nousee, kun yrität tuoda moduulia, jota ei ole. Tällainen poikkeus tapahtuu, jos olet tehnyt kirjoitusvirheen moduulin nimessä tai moduulissa, jota ei ole vakiopolulla. |
HakemistoVirhe | IndexErroris nousee, kun yrität viitata jaksoon, joka on alueen ulkopuolella. |
KeyError | Kun tiettyä avainta ei löydy sanakirjasta, KeyError-poikkeus nousee. |
NameError | NameError nousee, kun nimeen viitataan koodissa, jota ei koskaan ole paikallisessa tai globaalissa nimiavaruudessa. |
ValueError | Arvovirhe nousee, kun funktio tai sisäänrakennettu operaatio vastaanottaa argumentin, joka voi olla oikean tyyppinen, mutta jolla ei ole sopivaa arvoa. |
EOFerror | Tällainen virhe ilmenee, kun jokin sisäänrakennetuista toiminnoista (input () tai raw_input ()) saavuttaa EOF-ehdon lukematta tietoja. |
ZeroDivisonError | Tämän tyyppinen virhe, joka syntyy, kun jako tai moduuli nollalla tapahtuu kaikille numerotyypeille. |
IOError- | Tällainen virhe ilmeni, kun tulo / lähtö-toiminto epäonnistuu. |
syntaksiVirhe | Syntaksi Virheet, jotka ilmenevät, kun Python-syntaksissa on virhe. |
Sisältövirhe | Tämä virhe ilmeni, kun sisennystä ei ole määritelty oikein |
Muita tärkeitä Python-poikkeuksia
Poikkeus | Kuvaus |
Aritmeettinen poikkeus | Aritmeettinen virhe, kuten jako nollalla. |
ArraylndexOutOfBoundsException | Taulukkoindeksi on rajojen ulkopuolella. |
ArrayStoreException | Määritys auttaa sinua yhteensopimattoman tyyppiseen taulukkoelementtiin. |
ClassCastException | Virheellinen näyttelijä |
MlegalMonitorStateException | Näytön laiton toiminta, kuten odottaminen lukitsemattomalla langalla. |
MlegalStateException | Ympäristö tai sovellus on väärässä tilassa. |
ClassNotFoundException | Kurssia ei löydy. |
CloneNotSupportedException | Yritä kloonata objekti, joka ei ota käyttöön Cloneable-käyttöliittymää. |
Laiton pääsyn poikkeus | Luokkaan pääsy evätään. |
Välitön poikkeus | Tapahtuu, kun yrität luoda käyttöliittymän tai abstraktin luokan objektin. |
CloneNotSupportedException | Yritä kloonata objekti, joka ei toteuta käyttöliittymää. |
Virhe vs. poikkeukset
Virhe | Poikkeukset |
Kaikki Pythonin virheet ovat tarkistamatonta tyyppiä. | Poikkeuksia ovat sekä tarkistettu että tarkistamaton tyyppi. |
Virheitä esiintyy ajon aikana, jotka kääntäjälle ovat tuntemattomia. | Poikkeukset voidaan palauttaa käsittelemällä niitä try-catch-lohkojen avulla. |
Virheet johtuvat enimmäkseen ympäristöstä, jossa sovellus on käynnissä. | Itse sovellus aiheuttaa poikkeuksia. |
Esimerkkejä: OutofMemoryError | Esimerkkejä: Tarkistetut poikkeukset, SQL-poikkeus, NullPointerException jne. |
Yhteenveto
- Poikkeuksena on virhe, joka tapahtui ohjelman suorituksen aikana.
- Poikkeus osoittaa, että vaikka tapahtuma voi tapahtua, tämän tyyppinen tapahtuma tapahtuu harvoin.
- Yleisiä esimerkkejä poikkeuksista ovat 1) Jakaminen nollalla, 2) Pääsy tiedostoon, jota ei ole olemassa, 3) Kahden yhteensopimattoman tyypin lisääminen.
- Poikkeuksena on Python-objekti, joka edustaa virhettä.
- Kokeilulauseke sisältää avainsanayrityksen, jota seuraa kaksoispiste (:) ja koodisarja, jossa voi esiintyä poikkeuksia. Siinä on yksi tai useampi lauseke.
- Saalislohkoissa on yksi argumentti kerrallaan, minkä tyyppisen poikkeuksen se todennäköisesti saa kiinni.
- Korotuslauseke määrittää argumentin, joka alustaa poikkeusobjektin.
- Lopuksi, lohko toteutetaan aina riippumatta siitä, onko poikkeus heitetty vai ei.