Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Poikkeushierarkian Ymmärtäminen | Comprehensive Error Handling
Pythonin Rakenteellinen Ohjelmointi

Poikkeushierarkian Ymmärtäminen

Pyyhkäise näyttääksesi valikon

Kun käsittelet virheidenhallintaa Pythonissa, on tärkeää ymmärtää sisäänrakennettujen poikkeusluokkien rakenne. Kaikki exceptions periytyvät juuriluokasta BaseException. Suurin osa niistä, joita käsittelet päivittäisessä koodissa, ovat Exception-aliluokkia, joka itse on suoraan BaseException-luokan lapsi. Tämä rakenne mahdollistaa laajojen virheluokkien käsittelyn tai tiettyjen ongelmien hallinnan.

Yleisesti käytetyt poikkeukset, kuten ValueError, TypeError, KeyError ja IOError (tunnetaan myös nimellä OSError uudemmassa Pythonissa), ovat kaikki Exception-aliluokkia. Lisäksi on erikoistuneempia poikkeuksia, kuten ZeroDivisionError ja IndexError, jotka periytyvät näistä yleisistä luokista. Jotkin poikkeukset, kuten KeyboardInterrupt ja SystemExit, periytyvät suoraan BaseException-luokasta – näitä ei yleensä ole tarkoitus käsitellä tavallisissa ohjelmissa.

Tämän hierarkian ymmärtäminen auttaa kirjoittamaan tarkkoja try/except-lohkoja, jolloin käsittelet vain haluamasi poikkeukset ja vältät kriittisten järjestelmäsignaalien peittämisen.

1234567891011121314151617181920212223242526272829303132
def raise_and_catch_exceptions(): # Catching a ValueError try: int("not a number") except ValueError as ve: print("Caught ValueError:", ve) # Catching a ZeroDivisionError (subclass of ArithmeticError) try: result = 10 / 0 except ZeroDivisionError as zde: print("Caught ZeroDivisionError:", zde) # Catching a TypeError try: result = "10" + 5 except TypeError as te: print("Caught TypeError:", te) # Catching an OSError (formerly IOError) try: open("file_that_does_not_exist.txt") except OSError as oe: print("Caught OSError:", oe) # Catching a general Exception (will catch most, but not all, exceptions) try: raise KeyError("missing key") except Exception as e: print("Caught Exception:", type(e).__name__, "-", e) raise_and_catch_exceptions()

1. Mitä sisäänrakennettua poikkeusluokkaa käyttäisit virheiden käsittelyyn, kun yritetään muuntaa merkkijono kokonaisluvuksi, mutta muunnos ei onnistu?

2. Mikä sisäänrakennettu poikkeus nostetaan, kun yritetään hakea sanakirjasta avainta, jota ei ole olemassa?

question mark

Mitä sisäänrakennettua poikkeusluokkaa käyttäisit virheiden käsittelyyn, kun yritetään muuntaa merkkijono kokonaisluvuksi, mutta muunnos ei onnistu?

Valitse oikea vastaus

question mark

Mikä sisäänrakennettu poikkeus nostetaan, kun yritetään hakea sanakirjasta avainta, jota ei ole olemassa?

Valitse oikea vastaus

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 1. Luku 1

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

Osio 1. Luku 1
some-alt