Python Poikkeusten käsittely: try, except, finally, raise

⚡ Älykäs yhteenveto

Python Poikkeusten käsittely antaa ohjelmasi reagoida suorituksenaikaisiin virheisiin kaatumisen sijaan. Tässä opit, miten try, except, finally ja raise toimivat, miksi poikkeukset ovat tärkeitä ja mitä yleisiä sisäänrakennettuja virhetyyppejä kohtaat.

  • ⚠️ Mitä se on: Poikkeus on ajonaikainen virhe, joka Python nousee esiin, kun jokin menee pieleen.
  • 🛡️ kokeile / paitsi: Try-lohkossa suoritetaan riskialtista koodia; paitsi että lohko nappaa ja käsittelee poikkeuksen.
  • 🧹 lopuksi: Finally-lohko suoritetaan aina riippumatta siitä, tapahtuiko poikkeus vai ei.
  • 🚀 nostaa: raise-lausekkeen avulla voit laukaista poikkeuksen tarkoituksella.
  • 📋 Virhetyypit: Yleisiä poikkeuksia ovat ValueError, KeyError, IndexError ja ZeroDivisionError.
  • 🤖 Tekoälyn apu: Tekoälytyökalut, kuten Copilot, luovat try-except-lohkoja ja ehdottavat virhetyyppejä.

Python poikkeus Käsittely

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-virhe ilmenee, kun yrität tuoda moduulia, jota ei ole. Tällainen poikkeus tapahtuu, jos olet tehnyt typing virhe moduulin nimessä tai moduulia 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 Tapahtuu, kun yrität luoda rajapinnan tai abs:n objektin.tract-luokka.
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.

UKK

Poikkeusten käsittely on prosessi, jolla reagoidaan ajonaikaisiin virheisiin, jotta ohjelma ei kaadu. Python käyttää try- ja except-lohkoja poikkeusten havaitsemiseen ja palautuskoodin suorittamiseen.

Code joka saattaa epäonnistua, menee try-lohkon sisään. Jos poikkeus tapahtuu, Python hyppää vastaavaan except-lohkoon, joka käsittelee virheen ja antaa ohjelman jatkua.

finally-lohko suoritetaan riippumatta siitä, onko poikkeusta tapahtunut vai ei, joten se sopii erinomaisesti siivoustehtäviin, kuten tiedostojen sulkemiseen tai resurssien vapauttamiseen, joiden on aina tapahduttava.

raise-lauseke laukaisee poikkeuksen tarkoituksella. Voit laukaista sisäänrakennetun poikkeuksen, kuten ValueError-poikkeuksen, tai mukautetun poikkeuksen, ilmoittaaksesi virhetilanteesta.

Virheitä, kuten SyntaxError-virheitä, ei yleensä voida korjata eikä pysäyttää ohjelmaa. Poikkeukset ovat ajonaikaisia ​​tapahtumia, jotka voidaan havaita ja käsitellä try- ja except-lohkoilla.

GitHub Copilotin kaltaiset tekoälyavustajat täydentävät try-except-lohkot automaattisesti, ehdottavat oikeaa poikkeustyyppiä ja luovat lopuksi siivouskoodia lyhyen logiikkasi kuvauksen perusteella.

Kyllä. Tekoälyllä toimivat työkalut voivat automatisoida käärimisenping riskialtista koodia try-except-lohkoissa, suosittele tiettyjä poikkeuksia bare except -lohkojen sijaan ja lisää lokikirjaus, jotta virheiden debuggaus on helpompaa.

Yleisiä sisäänrakennettuja poikkeuksia ovat ValueError, TypeError, KeyError, IndexError, ImportError, NameError ja ZeroDivisionError. Jokainen niistä viestii tietynlaisesta ajonaikaisesta ongelmasta koodissasi.

Tiivistä tämä viesti seuraavasti: