Poikkeus
Poikkeus tarkoittaa tietotekniikassa ennakoimattomia tai epänormaaleja tilanteita järjestelmän toiminnassa.[1] Käsittelemättömät poikkeukset voivat johtaa järjestelmän kaatumiseen.[1]
Poikkeus on ohjelmointikielissä keino ilmoittaa vikatilanteesta ja palauttaa toiminta toiselle tasolle tilanteen käsittelemiseksi.[2][3] Laitteistotasolla poikkeus tarkoittaa normaalin suorituksen keskeyttämistä suorittimessa, kuten virheellinen käsky tai suojattu muistialue.[4][5]
Laitteistopoikkeukset
[muokkaa | muokkaa wikitekstiä]Laitteistotason poikkeuksia ovat muun muassa:[6][7]
- nollalla jakaminen
- viittaus väärään muistialueeseen
- virheellinen käsky
Ohjelmistopoikkeukset
[muokkaa | muokkaa wikitekstiä]Poikkeuksien yksi esimerkkikohteista ovat erilaiset ohjelmakirjastot. Ohjelmakirjaston ajonaikaiset virheet voi usein kirjaston tekijä havaita mutta hän ei tiedä miten menetellä sellaisen kanssa. Ohjelmakirjastoa käyttävä ohjelma/ohjelmoija tietää miten kertoa poikkeus ohjelman käyttäjälle tai reagoida siihen muulla tavoin.
Poikkeuksien käsitteleminen
[muokkaa | muokkaa wikitekstiä]Tavallisesti poikkeus yritään kokeilla try
-funktiolla (tai muulla koodikielessä olevalla vastaavalla funktiolla) ja poikkeustilanteessa käsiteltävä koodi jälkeenpäin except
-funktiolla (tai jälleen muulla koodikielessä olevalla vastaavalla). On myös mahdollista saada koodi tunnistamaan juuri tietty poikkeustyyppi.
Poikkeuksenkäsittely Pythonissa
[muokkaa | muokkaa wikitekstiä]>>> var1=False
>>> var2=99
>>> try:
print(var1/var2)
except:
print("error")
error
try
...catch
-lause
try
...except
, taitry
...finally
Muut kielet
[muokkaa | muokkaa wikitekstiä]C-kielessä poikkeukset on mahdollista toteuttaa itse setjmp
ja longjmp
standardikirjaston funktioiden avulla.[8]
Lähteet
[muokkaa | muokkaa wikitekstiä]- ↑ a b Charles P. Shelton: Exception Handling kevät 1999. Carnegie Mellon University. Viitattu 10.7.2018.
- ↑ Boost Exception boost.org. Viitattu 10.7.2018.
- ↑ Raising Software Exceptions Microsoft. Viitattu 10.7.2018.
- ↑ About processor exceptions Arm. Viitattu 10.7.2018.
- ↑ Adam Zhang: Core Dump Management on the Solaris OS huhtikuu 2007. Sun Microsystems. Viitattu 10.7.2018.
- ↑ Hardware Exceptions Microsoft. Viitattu 10.7.2018.
- ↑ Hardware Exceptions hsafoundation.com. Arkistoitu 4.7.2018. Viitattu 10.7.2018.
- ↑ Exceptions in C with Longjmp and Setjmp di.unipi.it. Viitattu 4.4.2018.