©Internetix


Poikkeustilanteiden hallinta


Poikkeustilanteiden hallinta on yksi sovelluskehityksen merkittävimpiä asioita.

Java-kielestäkin löytyy poikkeusten käsittelyyn tarkoitetut rakenteet, joiden avulla voidaan reagoida erilaisiin poikkeustilanteisiin (esim. virhetilanteisiin).

Poikkeuskäsittelijät (Exception-rutiinit) tarkkailevat ajon aikana sattuvia poikkeustilanteita. Tällä tavoin ohjelmoija voi ohjelmallisesti yrittää hoitaa erilaiset suorituksenaikaiset ongelmatilanteet mahdollisimman tyylikkäästi.

Java-kielestä löytyy kaksi rakennetta poikkeustilanteiden käsittelyyn:

try ... catch
try ... finally

try ... catch:

try ... catch -rakenteen avulla voidaan reagoida erityyppisiin ongelmatilanteisiin melko yksilöidysti kirjoittamalla eri tyyppisille virheille omat käsittelyhaaransa. Rakenne muistuttaa ohjelmointikielten yleistä monivalinta-lausetta.

Seuraava esimerkki havainnollistaa try...catch -rakenteen käyttöä:

Esim16

Mahdolliset poikkeukset ovat:

Exception Mikä tahansa virhe
ArithmeticException Käytännössä nollalla jako
ArrayIndexOutBoundsException Alkiota ei ole olemassa
ClassNotFoundException Luokkaa ei ole olemassa
NegativeArraySizeException Negatiivinen taulukon koko
MullPointerException Oliota ei ole olemassa

try ... finally:

try ... finally -rakenne eroaa try...catch -rakenteesta siinä, että sen finally-osa suoritetaan joka tapauksessa, syntyi virhe tai ei. try...catch-rakenteessahan virheenkäsittelijöihin mennään vasta jos jokin virhe syntyy.

Seuraava esimerkki havainnollistaa try...finally -rakenteen käyttöä:

Esim17

Oman poikkeuksen luominen Javassa:

Java mahdollistaa myös omien poikkeuskäsittelijöiden luomisen siten, että ensin periytetään oma poikkeuskäsittelijä Exception luokasta.

Tämän jälkeen tätä omaa poikkeusta voidaan käyttää Javassa normaalisti try...catch rakenteen yhteydessä.

Seuraavassa esimerkissä toteutamme oman poikkeusluokan ja testaamme sen toimivuuden try...catch -rakenteen kanssa:

Esim18


ŠInternetix/Java-ohjelmointi/Jukka Selin 1999