Python Academy · Oppitunti

Poikkeusten ymmärtäminen

Opetelkaa, mitä poikkeukset ovat ja miten Python nostaa niitä.

Oppitunti 1/414 vaihetta

Poikkeusten ymmärtäminen on ilmainen Python Academy-oppitunti CoddyKitissä. Tämä on oppitunti 1/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Python Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Python Academy-kurssilla on yhteensä 4 oppituntia.

Johdanto

Poikkeukset ovat Pythonin mekanismi virheiden ilmoittamiseen ja käsittelemiseen ajon aikana.

Mikä on poikkeus?

Poikkeus on tapahtuma, joka keskeyttää ohjelman normaalin suoritusvirran. Python nostaa poikkeuksia virheiden tapahtuessa — esimerkiksi nollalla jaettaessa.
# 1 / 0  # raises ZeroDivisionError
print('exceptions demo')

Poikkeushierarkia

Kaikki poikkeukset periytyvät BaseException-luokasta. Useimmat sovelluskoodissa käsiteltävät poikkeukset periytyvät Exception-luokasta. Erityisiä tyyppejä ovat esimerkiksi ValueError, TypeError ja KeyError.
print(issubclass(ValueError, Exception))
print(issubclass(Exception, BaseException))

Yleiset sisäänrakennetut poikkeukset

TypeError: väärä tyyppi. ValueError: oikea tyyppi, väärä arvo. KeyError: sanakirjan avain puuttuu. IndexError: luettelon indeksi on alueen ulkopuolella. AttributeError: määritettä ei ole.
# Examples:
# int('abc')       -> ValueError
# d['missing']     -> KeyError
# [1,2][9]         -> IndexError
print('common exceptions')

Traceback

Kun poikkeusta ei käsitellä, Python tulostaa tracebackin eli kutsupinon alhaalta (tuoreimmasta kutsusta) ylöspäin. Opetelkaa lukemaan sitä.
def f(): return 1/0
# f()  # shows traceback
print('traceback demo')

Poikkeusobjekti

Jokainen poikkeus sisältää viestin. str(e) tai e.args antaa kuvauksen. Poikkeukseen pääsee käsiksi except-lohkossa näin: except ValueError as e.
try:
    int('abc')
except ValueError as e:
    print(type(e).__name__, e)

Useiden tyyppien käsitteleminen

except (TypeError, ValueError): käsittelee kumpaa tahansa tyyppiä yhdessä lausekkeessa.
def parse(x):
    try:
        return int(x)
    except (TypeError, ValueError):
        return None
print(parse('abc'), parse(None))

Exception Group (3.11+)

Python 3.11 lisää ExceptionGroup-rakenteen useille samanaikaisille poikkeuksille, joita käsitellään except*-syntaksilla.
# Python 3.11+:
# try: ...
# except* ValueError as eg:
#     print(eg.exceptions)
print('exception group demo')

Varoitukset ja poikkeukset

import warnings; warnings.warn('msg') antaa varoituksen nostamatta poikkeusta. Käyttäkää tätä vanhentuneista ominaisuuksista ja lievemmistä virheistä ilmoittamiseen.
import warnings
warnings.warn('This is deprecated', DeprecationWarning)
print('warning issued')

sys.exc_info()

except-lohkon sisällä sys.exc_info() palauttaa arvot (type, value, traceback) — tämä on hyödyllinen kaikkien poikkeustietojen kirjaamiseen.
import sys
try:
    1/0
except:
    exc_type, exc_val, _ = sys.exc_info()
    print(exc_type, exc_val)

Poikkeusten ketjuttaminen

raise NewError('msg') from original_exc ketjuttaa poikkeukset. __cause__-määrite yhdistää ne.
try:
    int('abc')
except ValueError as e:
    raise RuntimeError('parse failed') from e

Pikatarkistus

Mikä poikkeus nostetaan, kun sanakirjasta haetaan avainta, jota ei ole olemassa?

Kertaus

Poikkeukset periytyvät BaseException-luokasta. Lukekaa tracebackit alhaalta ylöspäin. Käsitelkää poikkeukset except as e -rakenteella. Yleisiä tyyppejä ovat ValueError, TypeError, KeyError, IndexError ja AttributeError.

Jatkakaa eteenpäin

Hienosti tehty! Siirtykää seuraavaan oppituntiin jatkaaksenne etenemistä.
Aloita maksutta

Opi Python tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
76
Oppitunnit
320

Usein kysytyt kysymykset

Onko oppitunti ”Poikkeusten ymmärtäminen” ilmainen?

Kyllä – oppitunnin ”Poikkeusten ymmärtäminen” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Python Academy-kurssin, päivitä CoddyKit PROhon. Python Academy-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Poikkeusten ymmärtäminen”?

Opetelkaa, mitä poikkeukset ovat ja miten Python nostaa niitä. Harjoittelet Python Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Python Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Python Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 1/4.

Kuinka kauan ”Poikkeusten ymmärtäminen”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Python Academy-oppitunnilla?

Kyllä. Jokainen Python Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Poikkeusten ymmärtäminen
  2. try / except / else / finally
  3. Poikkeusten nostaminen ja uudelleennostaminen
  4. Mukautetut poikkeusluokat
← Takaisin: Python Academy