![]() |
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öä:



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öä:



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:


