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
Laitteistotason poikkeuksia ovat muun muassa:[6][7]
- nollalla jakaminen
- viittaus väärään muistialueeseen
- virheellinen käsky
Ohjelmistopoikkeukset
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
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.
Muut kielet
C-kielessä poikkeukset on mahdollista toteuttaa itse setjmp
ja longjmp
standardikirjaston funktioiden avulla.[8]
Lähteet
- 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.