Poikkeus

Wikipediasta
(Ohjattu sivulta Poikkeusten käsittely)
Siirry navigaatioon Siirry hakuun
Tämä artikkeli käsittelee poikkeustilanteita tietotekniikassa. Sanan muita merkityksiä on lueteltu täsmennyssivulla.

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]

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

C++, Java

  • try...catch -lause

Pascal, Python ja Delphi

  • try...except, tai
  • try...finally

C-kielessä poikkeukset on mahdollista toteuttaa itse setjmp ja longjmp standardikirjaston funktioiden avulla.[8]

  1. a b Charles P. Shelton: Exception Handling kevät 1999. Carnegie Mellon University. Viitattu 10.7.2018.
  2. Boost Exception boost.org. Viitattu 10.7.2018.
  3. Raising Software Exceptions Microsoft. Viitattu 10.7.2018.
  4. About processor exceptions Arm. Viitattu 10.7.2018.
  5. Adam Zhang: Core Dump Management on the Solaris OS huhtikuu 2007. Sun Microsystems. Viitattu 10.7.2018.
  6. Hardware Exceptions Microsoft. Viitattu 10.7.2018.
  7. Hardware Exceptions hsafoundation.com. Arkistoitu 4.7.2018. Viitattu 10.7.2018.
  8. Exceptions in C with Longjmp and Setjmp di.unipi.it. Viitattu 4.4.2018.
Tämä tietotekniikkaan liittyvä artikkeli on tynkä. Voit auttaa Wikipediaa laajentamalla artikkelia.