Ota kiinni poikkeus "IOError" ao. koodista (nostetaan koska avattavaa tiedostoa ei ole olemassa). Tulosta poikkeuskäsittelijässä teksti:
"Tiedostoa <nimi> ei voitu avata"
fp = open("File-that-does-not-exits.txt")
Täydennä ao. koodi suorittamalla ensin python-käsky: iRes = 5/0
Rajoite: päättele tarvittava poikkeusnimi syntyvästä python-tulosteesta.
try:
res = 5/0
except <koodi>:
print "Error: division by zero!"
Aja allaoleva koodi ja tutki mikä poikkeus siitä nousee. Toteuta koodi, joka ottaa kiinni tämän poikkeuksen ja kirjoittaa sen johdosta ruutuun selkeän kuvauksen millaiseen virheeseen törmättiin.
data = {"name": "Tero", "age": 10}
print(data["nimi"])
Toteuta funktio raise_test(), jolle annetaan ainoana argumenttina värin nimi.
Jos annettu väri on punainen, nosta määrittämäsi poikkeus nimeltä "RedException". Jos väri on keltainen, nosta määrittämäsi poikkeus "YellowException". Muussa tapauksessa funktio ei nosta hallitusti poikkeusta.
Testaa funktiosi koodilla, jossa otetaan kiinni omissa käsittelijöissään molemmat ed. poikkeuksista, sekä kolmannessa käsittelijässä kaikki loput ennalta arvaamattomat, hallitsemattomasti nousevat poikkeukset (joita tosin ei nouse, jos funktiosi toimii oikein. Toki voit tämänkin käsittelijän testata, esim. tekemällä funktiossa nollalla jaon kun syöte on jotain muuta kuin punainen tai keltainen).
Kerro mikä merkitys on "finally" haaralla poikkeuskäsittelijässä?
Laajenna harjoituksen 3 toteutusta niin, että kun olet tulostanut syyn poikkeuksen nousuun, nosta alkuperäinen poikkeus uudestaan, siis se sama poikkeus jonka seurauksena tultiin toteuttamaasi poikkeuskäsittelijään sisään. Tarvitset tähän vain yhden sanan mittaisen käskyn.
Copyright © 2025 ELOSOL