Ero Tarkastetun Poikkeuksen Ja Ajonaikaisen Poikkeuksen Välillä

Ero Tarkastetun Poikkeuksen Ja Ajonaikaisen Poikkeuksen Välillä
Ero Tarkastetun Poikkeuksen Ja Ajonaikaisen Poikkeuksen Välillä

Video: Ero Tarkastetun Poikkeuksen Ja Ajonaikaisen Poikkeuksen Välillä

Video: Ero Tarkastetun Poikkeuksen Ja Ajonaikaisen Poikkeuksen Välillä
Video: Rakennusvalvonnan pientaloilta oman kodin rakentajille 2024, Saattaa
Anonim

Tarkistettu poikkeus vs ajonaikainen poikkeus

Poikkeukset ovat erityyppisiä tapahtumia, jotka voivat häiritä normaalia ohjelmavirtaa. Nimen poikkeus tulee "poikkeuksellisesta tapahtumasta". Poikkeuksen heittäminen on prosessi, jolla luodaan poikkeusobjekti ja luovutetaan se ajonaikaiselle järjestelmälle. Kun ajonaikainen järjestelmä vastaanottaa poikkeusobjektin, se yrittää löytää jonkun käsittelemään sitä puhelupinossa kulkemalla sitä päinvastaisessa järjestyksessä (jossa menetelmiä kutsuttiin). Ajonaikainen järjestelmä on onnistunut, jos se löytää menetelmän poikkeuskäsittelijällä. Poikkeuskäsittelijä on koodilohko, joka voi virallisesti käsitellä mainittua poikkeusta. Jos ajonaikainen järjestelmä löytää sopivan käsittelijän, se välittää poikkeusobjektin käsittelijälle. Tätä kutsutaan poikkeuksen saamiseksi. Jos poikkeusta ei kuitenkaan voida käsitellä, ohjelma päättyy. Java-kielelläpoikkeukset periytyvät Heitettävä luokka. Valitut poikkeukset ovat poikkeuksia, joissa kääntäjä pakottaa käsittelyn. Suorituksenaikaiset poikkeukset ovat eräänlaisia poikkeuksia, joita kääntäjä ei tarkista.

Mikä on tarkistettu poikkeus?

Valitut poikkeukset ovat joko luokan java.lang.exception tai sen alaluokkien objekteja (paitsi java.lang. RuntimeException ja sen alaluokat). Valitut poikkeukset "tarkistetaan" kääntöhetkellä. Tämä tarkoittaa, että ohjelmoijan on joko kiinni tai heitettävä nämä poikkeukset, muuten kääntäjä valittaa (aiheuttaen kääntäjävirheen). Tästä syystä monet tarkistetut poikkeukset ovat ohjelmoijien hyvin tiedossa. Esimerkiksi IOException ja sen alaluokat tarkistetaan poikkeuksina, ja aina, kun ohjelmoija käsittelee tiedoston avaamista tai muokkaamista, kääntäjä tarkistaa, että ohjelmoija huolehtii kaikista mahdollisista IOExceptions-toiminnoista.

Mikä on ajonaikainen poikkeus?

Suorituksenaikaiset poikkeukset koostuvat java.lang. RuntimeExceptionista ja kaikista sen alaluokista. Teoriassa ne palvelevat samaa tarkoitusta kuin tarkistetut poikkeukset, ja ne voidaan heittää tai käsitellä kuten tarkastettuja poikkeuksia, mutta kääntäjä ei pakota niiden käsittelyä. Siksi ajonaikaiset poikkeukset kuuluvat tarkastamattomien poikkeusten perheeseen. NullPointerException, NumberFormatEception, ClassCastException ja ArrayIndexOutOfBoundsException ovat yleisiä ajonaikaisia poikkeuksia Javassa.

Mitä eroa on tarkastetulla poikkeuksella ja ajonaikaisella poikkeuksella?

Vaikka sekä tarkistetut poikkeukset että ajonaikaiset poikkeukset ovat ei-toivottuja tapahtumia ohjelman suorituksen aikana, niillä on eroja. Kääntäjä pakottaa tarkistetun poikkeusten käsittelyn, mutta ajonaikaiset poikkeukset eivät. Siksi tarkistetut poikkeukset on heitettävä tai käsiteltävä koodin kokoamiseksi, mutta ajonaikaisia poikkeuksia ei ole. Tämän vuoksi ajonaikaiset poikkeukset kuuluvat virheiden ohella tarkistamattomien poikkeusten luokkaan.

Tarkistettujen poikkeusten haittana on, että ohjelmoijan on käsiteltävä sitä, vaikka hän ei osaa. Joten jos ohjelmoija vain heittää uuden poikkeuksen käärimättä alkuperäistä, alkuperäiseen poikkeukseen kuuluva pinon jälki menetetään. Täällä käyntiaikoja koskevat poikkeukset ovat käteviä. Koska kaikki ajonaikaiset poikkeukset voidaan käsitellä yhdessä paikassa, ohjelmoijat voivat kirjoittaa vähemmän koodia. Toisaalta, koska tarkistetut poikkeukset on pyydettävä, ohjelmoijalle ei tule yllätystä. Hän tietää aina, mikä tarkistettu poikkeus voidaan heittää tietyllä menetelmällä. Päinvastoin, erilaisia ajonaikaisia poikkeuksia voidaan heittää ilman ohjelmoijan tietämystä.

Suositeltava: