Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migration of unmigrated content due to installation of a new plugin

...

Poikkeukset

...

ovat

...

ohjelmoinnissa

...

keino

...

käsitellä

...

virhetilanteita.

...

Virhetilanteen

...

sattuessa

...

luodaan

...

poikkeus,

...

joka

...

voidaan

...

ns.

...

ottaa

...

kiinni

...

poikkeuksille

...

tarkoitetuilla

...

rakenteella.

...

Jos

...

poikkeusta

...

ei

...

oteta

...

kiinni,

...

ohjelma

...

kaatuu

...

ja

...

tulostetaan

...

poikkeuksen

...

yhteydessä

...

oleva

...

virhe

...

viesti.

...

Poikkeuksia

...

syntyy

...

ohjelmointivirheistä

...

kun

...

Pythonin

...

sisäänrakennettuja

...

rakenteita

...

käytetään

...

väärin

...

kuten

...

jakamalla

...

nollalla

...

tai

...

syöttämällä

...

funktioihin

...

parametreiksi

...

sopimattomia

...

arvoja.

...

Poikkeuksia

...

voi

...

syntyä

...

myös

...

vaikka

...

ohjelmoinnissa

...

ei

...

ole

...

virheitä;

...

esim.

...

tiedostoa

...

avattaessa

...

avattavaa

...

tiedostoa

...

ei

...

välttämättä

...

löydy,

...

mikä

...

synnyttää

...

virheen

...

vaikka

...

ohjelma

...

olisi

...

ihan

...

toimiva.

...

Poikkeuksia

...

voi

...

synnyttää

...

myös

...

itse

...

avainsanalla

...

raise,

...

jonka

...

jälkeen

...

kirjoitetaan

...

haluttu

...

poikkeus,

...

jolle

...

annetaan

...

virhe

...

viesti

...

kirjoittamalla

...

poikkeuksen

...

jälkeen

...

sulkeisiin

...

merkkijono.

...

Tässä

...

esimerkissä

...

synnytetään

...

tahallisesti

...

poikkeus,

...

jota

...

ei

...

käsitellä.

{
Code Block
}
raise ZeroDivisionError("ei voi jakaa nollalla")

input("Paina Enter-näppäintä lopettaaksesi.")
{code}

Poikkeuksia

...

voidaan

...

synnyttää

...

itse

...

tehdyissä

...

funktioissa

...

esimerkiksi

...

viestittämään

...

vääränlaisista

...

parameterista

...

ja

...

muista

...

virheistä.

...

Poikkeukset

...

käsitellään

...

avainsanalla

...

try

...

alkavalla

...

rakenteella

...

ja

...

sitä

...

seuraavilla

...

except

...

ja/tai

...

finally

...

lohkoilla.

...

Lohkoon

...

try

...

tulee

...

varsinainen

...

koodi,

...

joka

...

halutaan

...

ajaa

...

ja

...

jossa

...

saattaa

...

syntyä

...

poikkeuksia.

...

Lohkoon

...

except

...

vastaavan

...

avainsanan

...

lisäksi

...

poikkeuksen,

...

joka

...

halutaan

...

käsitellä.

...

Poikkeukset

...

ovat

...

oliota

...

ja

...

poikkeusolioita

...

määrittäviä

...

luokkia

...

useita,

...

siksi

...

täytyy

...

määrittää

...

mikä

...

poikkeus

...

halutaan

...

käsitellä.

...

Märittämällä

...

käsiteltäväksi

...

poikkeukseksi

...

Exception

...

käsitellään

...

osiossa

...

kaikki

...

poikkeukset,

...

koska

...

kaikki

...

poikkeusluokat

...

perivät

...

tämän

...

luokan

...

(perinnästä

...

tarkemmin

...

myöhemmin).

...

Tässä

...

esimerkissä

...

jaetaan

...

luku

...

nollalla

...

ja

...

otetaan

...

siitä

...

syntynyt

...

poikkeus

...

kiinni

...

try-except

...

rakenteella.

{
Code Block
}
try:
    a = 1 / 0
except ZeroDivisionError:
    print("Nollalla jako käsitelty.")

input("Paina Enter-näppäintä lopettaaksesi.")
{code}

Jos

...

ei

...

kumminkaan

...

ole

...

except

...

lohkoa,

...

jossa

...

poikkeus

...

käsiteltäisiin,

...

niin

...

ohjelma

...

kaatuu.

...

Tähän

...

voi

...

kuitenkin

...

vaikuttaa

...

finally

...

osiolla,

...

joka

...

ajetaan

...

ohjelman

...

kaatuessa

...

vastaavassa

...

try

...

lohkossa

...

tapahtuneen

...

virheen

...

seurauksena.

...

Tässä

...

esimerkissää

...

tallennetaan

...

luodun

...

poikkeuksen

...

virhe

...

tulostus

...

tiedostoon

...

ja

...

kerrotaan

...

modulin

...

time

...

funktion

...

localtime

...

avulla

...

kellonaika

...

jolloin

...

virhe

...

tapahtui.

{
Code Block
}
import time

s = "Ohjelmassa tapahtui virhe, jonka takia se suljettiin klo %s:%s."

try:
    a = 3 + "w"
except ZeroDivisionError:
    print("Nollalla jako käsitelty.")
finally:
    errorLog = open("errorlog.txt", 'w')
    errorLog.write(s % (time.localtime()[3], time.localtime()[4]))
    errorLog.close()

input("Paina Enter-näppäintä lopettaaksesi.")
{code}