Virheet ovat yhtä lailla käyttäjille ja ohjelmoijille. Kehittäjät eivät selvästikään halua, että heidän ohjelmistonsa katoavat joka käänteessä, ja käyttäjät ovat nyt niin tottuneita virheisiin - ohjelmat, jotka ne nöyrästi hyväksyvät maksamaan hinnan ohjelmistoista, joissa on varmasti ainakin yksi virhe se. Jaava on suunniteltu antamaan ohjelmoijalle urheilumahdollisuudet virheettömän sovelluksen suunnittelussa. On olemassa poikkeuksia, jotka ohjelmoija tietää, että ne ovat mahdollisuus, kun sovellus on vuorovaikutuksessa resurssin tai käyttäjän kanssa ja nämä poikkeukset voidaan hoitaa. Valitettavasti on poikkeuksia, joita ohjelmoija ei voi hallita tai yksinkertaisesti sivuuttaa. Lyhyesti sanottuna, kaikki poikkeukset eivät ole yhtä tasaisia, ja siksi ohjelmoijalle on olemassa useita tyyppejä, joita ajatella.
Poikkeus on tapahtuma, joka aiheuttaa sen, että ohjelma ei pysty kulkemaan suunnitellussa suorituksessaan. Poikkeuksia on kolme tyyppiä: tarkistettu poikkeus, virhe ja ajonaikainen poikkeus.
Tarkistettu poikkeus
Tarkistetut poikkeukset ovat poikkeuksia, jotka Java-sovellusten on pystyttävä selviytymään. Esimerkiksi, jos sovellus lukee tietoja tiedostosta, sen pitäisi pystyä käsittelemään FileNotFoundException
. Loppujen lopuksi ei ole mitään takeita siitä, että odotettu tiedosto on siellä, missä sen on tarkoitus olla. Tiedostojärjestelmässä voi tapahtua mitä tahansa, josta sovelluksella ei olisi aavistustakaan.
Otetaan tämä esimerkki askeleen pidemmälle. Oletetaan, että käytämme FileReader
luokka lukemaan merkkitiedoston. Jos katsot FileReader-konstruktorimääritys Java-apissa näet sen menetelmän allekirjoituksen:
julkinen FileReader (merkkijonotiedostonimi) heittää FileNotFoundException.
Kuten näette, rakentaja toteaa erityisesti, että FileReader
rakentaja voi heittää FileNotFoundException
. Tämä on järkevää, koska on erittäin todennäköistä, että Tiedoston nimi
Merkkijono on väärä toisinaan. Katso seuraava koodi:
julkinen staattinen void main (merkkijono [] args) { FileReader fileInput = null; // Avaa syöttötiedosto. fileInput = uusi FileReader ("Untitled.txt"); }
Syntaktisesti lauseet ovat oikeita, mutta tätä koodia ei koskaan koota. Kääntäjä tietää FileReader
rakentaja voi heittää FileNotFoundException
ja tämä poikkeus käsitellään kutsukoodilla. Vaihtoehtoja on kaksi - ensinnäkin voimme siirtää poikkeuksen menetelmästämme määrittämällä a heittää
lauseke myös:
julkinen staattinen void main (String [] args) heittää FileNotFoundException { FileReader fileInput = null; // Avaa syöttötiedosto. fileInput = uusi FileReader ("Untitled.txt"); }
Tai voimme todella käsitellä paitsi:
julkinen staattinen void main (merkkijono [] args) { FileReader fileInput = null; yrittää. { // Avaa syöttötiedosto. fileInput = uusi FileReader ("Untitled.txt"); } kiinni (FileNotFoundException ex) { // kehota käyttäjää menemään etsimään tiedosto. } }
Hyvin kirjoitettujen Java-sovellusten on kyettävä selviytymään tarkistetuista poikkeuksista.
virheet
Toisen tyyppinen poikkeus tunnetaan virheenä. Kun poikkeus tapahtuu, JVM luo poikkeusobjektin. Nämä kaikki objektit johtuvat heitettävä
luokka. heitettävä
luokalla on kaksi pääluokkaa - Virhe
ja poikkeus
. Virhe
luokka tarkoittaa poikkeusta, jota sovellus ei todennäköisesti pysty käsittelemään.
Näitä poikkeuksia pidetään harvinaisina. Esimerkiksi JVM: llä voi loppua resursseja, koska laitteisto ei pysty selviytymään kaikista prosesseista, joita sen on käsiteltävä. Sovellus voi saada virheen ilmoittamalla siitä käyttäjälle, mutta yleensä sovelluksen on suljettava, kunnes taustalla oleva ongelma on ratkaistu.
Runtime Poikkeukset
ajonaikainen poikkeus tapahtuu yksinkertaisesti siksi, että ohjelmoija on tehnyt virheen. Olet kirjoittanut koodin, se näyttää hyvältä kääntäjälle ja kun lähdet suorittamaan koodia, se kaatuu, koska se yritti käyttää taulukon elementtiä, jota ei ole olemassa, tai looginen virhe aiheutti menetelmän kutsumisen nollaksi arvo. Tai mitä tahansa virheitä, joita ohjelmoija voi tehdä. Mutta se on kunnossa, havaitsemme nämä poikkeukset kattavilla testauksilla, eikö niin?
Virheet ja ajoajan poikkeukset kuuluvat tarkistamattomien poikkeusten luokkaan.