Tässä opetusohjelmassa opimme Java-poikkeuksista. Käsittelemme Java-virheitä, poikkeuksia ja erityyppisiä poikkeuksia.
Poikkeuksena on odottamaton tapahtuma, joka tapahtuu ohjelman suorituksen aikana. Se vaikuttaa ohjelmaohjeiden kulkuun, mikä voi aiheuttaa ohjelman lopettamisen epänormaalisti.
Poikkeus voi tapahtua monista syistä. Jotkut niistä ovat:
- Virheellinen käyttäjän syöttö
- Laitevika
- Verkkoyhteyden katkeaminen
- Fyysiset rajoitukset (levymuisti loppu)
- Koodivirheet
- Ei-käytettävissä olevan tiedoston avaaminen
Java-poikkeushierarkia
Tässä on yksinkertaistettu kaavio Java-poikkeushierarkiasta.
Kuten yllä olevasta kuvasta näet, Throwable
luokka on hierarkian juuriluokka.
Huomaa, että hierarkia jakautuu kahteen osaan: virhe ja poikkeus.
Virheet
Virheet edustavat korjaamattomia olosuhteita, kuten Java-virtuaalikoneen (JVM) loppumassa muistia, muistivuotoja, pinon ylivuotovirheitä, kirjastojen yhteensopimattomuutta, ääretöntä rekursiota jne.
Virheet eivät yleensä ole ohjelmoijan hallinnassa, eikä meidän pitäisi yrittää käsitellä virheitä.
Poikkeukset
Ohjelma voi havaita ja käsitellä poikkeuksia .
Kun menetelmän sisällä tapahtuu poikkeus, se luo objektin. Tätä objektia kutsutaan poikkeusobjektiksi.
Se sisältää tietoja poikkeuksesta, kuten poikkeuksen nimi ja kuvaus sekä ohjelman tila, jolloin poikkeus tapahtui.
Opimme näiden poikkeusten käsittelystä seuraavassa opetusohjelmassa. Tässä opetusohjelmassa keskitymme nyt erityyppisiin Java-poikkeuksiin.
Java-poikkeustyypit
Poikkeushierarkialla on myös kaksi haaraa: RuntimeException
ja IOException
.
1. Ajonaikainen poikkeus
Runtime poikkeus tapahtuu takia ohjelmointivirhe. Ne tunnetaan myös tarkistamattomina poikkeuksina .
Näitä poikkeuksia ei tarkisteta käännösaikana, vaan ajonaikana. Joitakin yleisiä ajonaikaisia poikkeuksia ovat:
- API: n väärä käyttö -
IllegalArgumentException
- Nollaosoittimen käyttö (muuttujan alustaminen puuttuu) -
NullPointerException
- Rajojen ulkopuolinen pääsy taulukkoon -
ArrayIndexOutOfBoundsException
- Numeron jakaminen 0: lla -
ArithmeticException
Voit ajatella sitä tällä tavalla. "Jos kyseessä on ajonaikainen poikkeus, se on sinun syytäsi".
Ei NullPointerException
olisi tapahtunut, jos olisit tarkistanut, onko muuttuja alustettu vai ei, ennen kuin käytät sitä.
Ei ArrayIndexOutOfBoundsException
olisi tapahtunut, jos testaisit taulukkoindeksiä matriisirajoihin nähden.
2. IOException
An IOException
tunnetaan myös tarkistettuna poikkeuksena . Kääntäjä tarkistaa ne kääntöhetkellä ja ohjelmoijaa kehotetaan käsittelemään näitä poikkeuksia.
Joitakin esimerkkejä tarkistetuista poikkeuksista ovat:
- Yritetään avata tiedosto, jota ei ole olemassa
FileNotFoundException
- Yritetään lukea tiedoston loppuun
Nyt tiedämme poikkeuksista, opimme poikkeusten käsittelystä seuraavassa opetusohjelmassa.