Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Java: Virheen sieppaus

Triton [18.12.2009 20:04:51]

#

Itse olen vielä varsin aloittelija tuon Javan kanssa ja ylipäätään se mitä olio-ohjelmointiin tulee ei ole vielä ihan hallussa, joten tuli tälläinen kysymys mieleen:

Olen havainnut oudon piirteen, että kun Javassa luodaan ilmentymä joistain luokasta, niin joskus jo pelkän ilmentymän tekeminen vaatii sen, että koodin heittää try-catch-lohkon sisälle ja joskus taas ei... Eli lähinnä mietin, että mistä saa tietään milloin tuota try-catchia käytetään ja milloin taas ei? Sikäli ymmärrän sen, että sillä saadaan selville mahdolliset virheet, mutta minkätakia se on joskus välttämätön?

tsuriga [18.12.2009 20:18:31]

#

Luokkien ja mm. niiden metodeiden (mukaanlukien konstruktorit) kuvaukset (sekä niiden heittämät poikkeukset) löytyvät APIsta. Myös jotkin IDEt varmasti näyttävät infoa metodeista tooltipeissään. Esimerkkinä vaikkapa java.security.Timestamp.Timestamp(Date timestamp, CertPath signedCertPath), jonka voidaan nähdä heittävän NullPointerExceptionin jos jokin annetuista parametreistä oli null.

hk [18.12.2009 23:08:53]

#

Triton kirjoitti:

Sikäli ymmärrän sen, että sillä saadaan selville mahdolliset virheet, mutta minkätakia se on joskus välttämätön?

Jos kyseessä on tarkistettu poikkeus, se on joko heitettävä tai siepattava. Yleensä siepattava, koska jos sellainen poikkeus tulee, se mitä olet yrittänyt ei ole onnistunut, ja asialle on tehtävä jotain.

Sami [18.12.2009 23:27:01]

#

Jos metodi voi heittää poikkeuksen (Exception), joka ei ole periytetty RuntimeException- tai Error-luokasta, niin tämä mahdollinen poikkeustilanne pitää käsitellä joko try-catchilla tai ilmoittamalla metodin määrittelyssä throws-avainsanalla, että tästä metodista voi lentää ulos annetun tyyppinen poikkeus (esim. public int foo(File bar) throws FileNotFoundException {...}).

_Pete_ [19.12.2009 07:03:15]

#

Tähän samaan "soppaan" vielä:

- Jos olion constructori heittää exception -> olion luonti epäonnistuu
- Jos näin käy, silti voi saada viitteen olioon
== huono homma

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta