Poikkeusten tarkistaminen on yksi tärkeimmistä asioista ohjelmoinnissa ja ohjelmistotestauksessa. Tarkistettu ja valitsematon poikkeus pysäyttää ohjelman toiminnan, kun se yrittää havaita vian tai virheen. Lisäksi katsotaan, että ohjelmoijan vastuulla on varmistaa, että näitä virheitä ei koskaan tapahdu. Sekä valittu että valitsematon poikkeus ovat poikkeuksellisen samankaltaisia, mutta ne eroavat toisistaan.
Tarkistettu vs. valitsematon poikkeus
Ero tarkastetun ja tarkistamattoman poikkeuksen välillä on se, että tarkastetut poikkeukset ovat niitä, jotka on pyydettävä ja joita on käsiteltävä checks () -käskyllä tai ne saavat ohjelman lopettamaan ja tulostamaan pinon jäljen, kun taas tarkistamattomien poikkeuksien pitäisi toisaalta sitä ei tarvitse saada kiinni tai käsitellä, koska ohjelmoijan vastuulla on varmistaa, ettei näitä virheitä koskaan tapahdu.
Tarkistettu poikkeus on tietyntyyppinen poikkeus, joka pysäyttää ohjelman toiminnan, kunnes se joko jää kiinni catch-lohkoon tai määritetään menetelmän heittolausekkeessa. Lisäksi Checked-poikkeus jää kiinni ja käsittelee checks () -käskyllä tai saa ohjelman lopettamaan ja tulostamaan pinon jäljen.
Jos poikkeuksen aiheuttanutta koodia ei testattu kunnolla, se voi aiheuttaa outoja Tarkistamattomia poikkeuksellisia virheitä, joita voi olla vaikea löytää ja korjata. Lisäksi Unchecked-poikkeuksia ei tarvitse ottaa kiinni tai käsitellä ollenkaan, koska ohjelmoijan vastuulla on varmistaa, että näitä virheitä ei koskaan tapahdu.
Vertailutaulukko välillä Valittu ja valitsematon poikkeus
Vertailuparametrit | Tarkistettu poikkeus | Valitsematon poikkeus |
Määritelmä | Tarkistetut poikkeukset ovat poikkeuksia, jotka on otettava kiinni ja joita on käsiteltävä checks () -lausekkeiden avulla. | Tarkistamattomia poikkeuksia ei tarvitse ottaa kiinni tai käsitellä ollenkaan. |
Esiintyminen | Tarkistetut poikkeukset on käsiteltävä catch-lohkolla käännösajan aikana. | Kiinnittämättömät poikkeukset, jotka tunnetaan myös ajonaikaisina poikkeuksina, ovat valitsemattomia poikkeuksia. |
Virheiden käsittely | Checked Exception pysäyttää ohjelman toiminnan, kunnes se yrittää havaita vian tai virheen. | Ohjelmoijan vastuulla on varmistaa, ettei näitä virheitä koskaan tapahdu. |
Poikkeusluokat | Siinä on poikkeuksellisia luokkia. | Siinä ei ole poikkeuksellisia luokkia tai se ei ole merkittävä osa poikkeusluokkia. |
Esimerkki | OutOfMemoryError, NullPointerException ja StackOverflowError. | IndexOutOfBoundsException |
Mikä on tarkistettu poikkeus?
Tarkistetut poikkeukset liittyvät läheisesti ohjelmistotestaukseen, lisäksi tarkistettu poikkeus on poikkeus, joka on käsiteltävä, muuten ohjelma lopetetaan. Tämä tarkoittaa, ettäheittolauseketta seuraava koodi ei suoriteta, jos mikään catch-lohko ei käsittele poikkeusta. Tarkistetuilla poikkeuksilla on kaksi tarkoitusta: ne estävät ohjelmaa jatkamasta virheen tapahtuessa ja voivat tarjota virheenkorjaustietoja siitä, mistä virhe löytyy.
Kääntäjä ei pakota ohjelmoijaa käsittelemään poikkeusta, mutta jokaisen luokan, joka laajentaa toista luokkaa, tulee myös joko laajentaa tai toteuttaa kaikki tarkistetut poikkeuksensa. Jos näin ei tapahdu, laajennetun luokan käännös epäonnistuu käännösaikavirheen vuoksi, joka ilmoittaa, että sen on käsiteltävä kaikki superluokan tarkistamat poikkeukset. Tämä estää perinnön käyttämisen sisäänrakennettujen vikatilojen kiertämiseen.
Kun poikkeus tehdään, se välitetään Eclipsen virheenkorjaajalle tai käyttöjärjestelmälle, joka sitten lopettaa ohjelman normaalisti. Käyttöjärjestelmä tulostaa pinojäljen. Pinojäljitys tarjoaa tietoja jokaisesta menetelmäkutsusta siinä järjestyksessä, jossa niitä kutsuttiin. Tämän avulla ohjelmoija voi löytää poikkeuksen tapahtuneen koodin kohdassa tai koodin suoritusvirrassa.
Mikä on valitsematon poikkeus?
Tarkistamattomia poikkeuksia on olemassa, jotta ohjelmoijat voivat ohjelmoida joustavammin ja tehokkaammin. Java on suunniteltu antamaan ohjelmoijille mahdollisuus luoda sovelluksia, jotka käyttävät resursseja tehokkaasti ja välttävät umpikujaa. Tarkistamattomat poikkeukset voidaan eliminoida huolellisella suunnittelulla ja koodauskäytännöillä. Kaikki muut Java-koodissa esiintyvät poikkeukset paitsi NullPointerException katsotaan kuitenkin valitsemattomiksi.
Tarkistamattomia poikkeuksia ei tarvitse ottaa kiinni tai käsitellä ollenkaan. Lisäksi ne ovat tapa korkeamman tason koodille kertoa alemman tason koodille, että se aikoo tehdä jotain, joka ei ole säikeen turvallista, mutta joka ei aiheuta ongelmia, jos vain yksi säie on käynnissä kerrallaan, esim. kuten joidenkin tietojen päivittäminen tai grafiikan näyttäminen näytöllä.
Tarkistamattomien poikkeusten käyttäminen on riskialtis ehdotus. Jos luokka aikoo tehdä tarkistamattoman poikkeuksen, luokkaa käyttävän on oltava tietoinen siitä ja hänellä on oltava tiukat menetelmät sen käsittelemiseksi. Ohjelmoija saattaa esimerkiksi haluta lukea joitakin tietoja tiedostosta ja kirjoittaa ne sitten takaisin, eikä tällainen toiminto vaadi synkronointia. On täysin hyväksyttävää, että sovellus lukee samat tiedot kahdesti kahdesta eri säikeestä ilman, että sillä on kielteisiä vaikutuksia järjestelmän suorituskykyyn tai vakauteen.
Tärkeimmät erot valitun ja valitsemattoman poikkeuksen välillä
Johtopäätös
Tarkistettu poikkeus on poikkeus, joka on käsiteltävä, tai ohjelma päättyy. Tarkistamattomat poikkeukset ovat kuitenkin niitä, jotka suorittavat pysäytystoiminnot kaikille säikeille. Tarkistettu ja valitsematon poikkeus on signaali koodin epäonnistumisesta. Tämä tapahtuu, kun koodi yrittää tehdä jotain odottamatonta. Jos poikkeuksen aiheuttanutta koodia ei testattu kunnolla, se voi aiheuttaa outoja virheitä, joita voi olla vaikea löytää ja korjata. Joissakin tapauksissa ohjelmoija saattaa jopa joutua kirjoittamaan koko ohjelman uudelleen tyhjästä. Lisäksi Tarkistetut ja tarkistamattomat poikkeukset liittyvät läheisesti ohjelmistojen testaukseen.