”Throwable” on luokkien Error and Exception vanhempi luokka. Luokka “RuntimeException” ja sen alaluokat, luokka “Error” ja sen lapsi luokat ovat ”Unchecked exceptions”, kun taas luokan “Exception” jäljellä olevat alaluokat, lukuun ottamatta RuntimeException, ovat tarkistettuja poikkeuksia. Tarkastetun ja tarkistamattoman poikkeuksen perusarvo on, että tarkistetut poikkeukset tarkistetaan kääntäjällä, mutta kääntäjä ei tarkista tarkistamattomia poikkeuksia .
Tarkastellaan vertailukartan avulla muita tarkistettujen ja tarkistamattomien poikkeusten eroja.
Vertailukaavio
Vertailun perusteet | Tarkistettu poikkeus | Tarkistamaton poikkeus |
---|---|---|
perustiedot | Kääntäjä tarkistaa tarkistetun poikkeuksen. | Kääntäjä ei tarkista Ei-valittua poikkeusta. |
Poikkeusluokka | Lukuun ottamatta "RuntimeException" -luokkaa kaikki luokan "Poikkeus" lapsi luokat ja "Virhe" -luokka ja sen lapsi luokat ovat tarkistettuja poikkeuksia. | "RuntimeException" -luokka ja sen lapsi luokat ovat "Poistettuja poikkeuksia". |
käsittely | Jos emme käsittele tarkistettua poikkeusta, kääntäjäobjektit. | Vaikka emme käsittele tarkistamatonta poikkeusta, kääntäjä ei vastusta. |
kokoelma | Ohjelma ei koota, jos ohjelmakoodissa on käsittelemätön tarkistettu poikkeus. | Ohjelma kokoaa onnistuneesti, vaikka ohjelmakoodissa on käsittelemätön, tarkistamaton poikkeus. |
Tarkastetun poikkeuksen määritelmä
Tarkastetut poikkeukset ovat niitä poikkeuksia, jotka kääntäjä tarkistaa ohjelman sujuvan suorittamisen varmistamiseksi. Kääntäjä tarkistaa, pystyykö ohjelma käsittelemään tarkistettua poikkeusta vai ei. Jos koodi ei kykene käsittelemään poikkeusta, tapahtuu virheilmoitus. Kaikki luokan "Poikkeus" alaluokat RuntimeException-luokkaa lukuun ottamatta ovat tarkistettuja poikkeuksia.
Tarkastellaan tarkistettua poikkeusta esimerkin avulla.
tuonti java.io. *; class Esimerkki {public static void main (String args []) {FileInputStream fis = null; fis = uusi FileInputStream ("B: /myfile.txt"); // Tämä konstruktori FileInputStream (tiedoston tiedostonimi) heittää FileNotFoundExceptionin, joka on tarkistettu poikkeus. int k; vaikka ((k = fis.read ())! = -1) // // FileInputStream-luokkaan luettu () -menetelmä heittää myös tarkistetun poikkeuksen: IOException. System.out.print ((char) k); } fis.close (); // Menetelmä sulkeutuu () sulkee IOExceptionin heittämän tiedoston tulovirran. }}
Yllä olevassa koodissa yritämme avata, lukea ja näyttää tiedoston sisällön. Saattaa käydä niin, että tiedostoa ei ole, ja FileNotFoundException-toiminto on tarkistettu poikkeus. Jos tarkistettua poikkeusta ei käsitellä, kääntäjä ei salli ohjelman kääntämistä sujuvasti. Se näyttää kääntymisajan virheen. Niinpä sujuvan kokoamisen varmistamiseksi tarkastettu poikkeus on pyydettävä tai ilmoitettava heitettäväksi.
Määrittelemättömän poikkeuksen määritelmä
Valitsemattomat poikkeukset ovat poikkeuksia, joita kääntäjä ei tarkista. Kääntäjä kokoaa ohjelman onnistuneesti, vaikka koodit eivät käsittele poikkeuksia. Luokka “Virhe” ja sen lapsi luokat, luokka “Runtime” ja sen alaluokat ovat tarkistamattomia poikkeuksia.
Katsotaanpa esimerkkiä valvomattomasta poikkeuksesta.
class Esimerkki {public static void main (String args []) {int arr [] = {1, 2, 3, 4, 5}; System.out.println (sovitus [7]); // ArrayIndexOutOfBoundsException. }}
Yllä olevassa koodissa näet, että on olemassa ArrayIndexOutOfBoundsException, koska yritän käyttää elementtiä, jota ei ole. Koska tämä on tarkistamaton poikkeus, kompilointiaika ei tule esiin, ja tiedosto kootaan ilman virheitä. Mutta ohjelma ei toteudu ennen kuin poikkeusta käsitellään. Niinpä sujuvan toteutuksen kannalta poikkeukset on pyydettävä tai ilmoitettava heittäviksi
Tarkastetut ja tarkistamattomat poikkeukset ovat keskeisiä
- Tarkistetut poikkeukset ovat kääntäjän tuntemus, mutta tarkistamattomat poikkeukset eivät ole kääntäjän tuntemus.
- Lukuun ottamatta RuntimeException ja Error-luokkaa kaikki luokat tarkistetaan. Toisaalta RuntimeException ja Error luokitukset ovat tarkistamattomia poikkeuksia.
- Jos koodissa ei käsitellä tarkistettuja poikkeuksia, kääntäjäobjektit. Toisaalta, jos emme käsittele tarkistamattomia poikkeuksia koodissa, kääntäjä ei vastusta.
- Jos koodissa havaitaan tarkistettuja poikkeuksia, koodi ei koota, vaikka vaikka koodia ei käsiteltäisi tarkistamattomia poikkeuksia, kääntäjä kokoaa koodin edelleen.
Huomautus :
Sekä tarkistettu että tarkistamaton poikkeus pakotetaan pakollisesti ajon aikana. Kääntäjä tarkistaa ne tai tarkistaa ne vain tarkistuksen aikana.
johtopäätös:
Sekä tarkistetut että tarkistamattomat poikkeukset on käsiteltävä, jotta ohjelma voidaan suorittaa sujuvasti.