Opetusohjelmassa opitaan esimerkkejä Java: n poikkeusten käsittelystä.
Viimeisessä opetusohjelmassa opimme Java-poikkeuksista. Tiedämme, että poikkeukset lopettavat poikkeuksellisen ohjelman suorittamisen.
Siksi on tärkeää käsitellä poikkeuksia. Tässä on luettelo erilaisista lähestymistavoista Java-poikkeusten käsittelemiseen.
- yritä … kiinni estää
- lopulta estää
- heittää ja heittää avainsana
1. Java yritä… kiinni estää
Try-catch-lohkoa käytetään Java-poikkeusten käsittelemiseen. Tässä on try… catch
lauseen syntaksi :
try ( // code ) catch(Exception e) ( // code )
Tässä olemme sijoittaneet koodin, joka saattaa tuottaa poikkeuksen try
lohkon sisään. Jokaista try
lohkoa seuraa catch
lohko.
Kun poikkeus tapahtuu, catch
lohko tarttuu siihen. catch
Lohko ei voi käyttää ilman try
lohko.
Esimerkki: Poikkeusten käsittely try … catch -toiminnolla
class Main ( public static void main(String() args) ( try ( // code that generate exception int divideByZero = 5 / 0; System.out.println("Rest of code in try block"); ) catch (ArithmeticException e) ( System.out.println("ArithmeticException => " + e.getMessage()); ) ) )
Tuotos
Aritmeettinen poikkeus => / nollalla
Esimerkissä yritämme jakaa luvun 0
. Tässä tämä koodi luo poikkeuksen.
Käsitellä poikkeus, olemme ottaneet koodia, 5 / 0
sisällä try
lohko. Nyt kun poikkeus tapahtuu, loput koodista try
lohkon sisällä ohitetaan.
catch
Lohko saaliit poikkeus ja lausunnot sisällä catch suoritetaan.
Jos mikään lauseen lauseista ei try
luo poikkeusta, catch
lohko ohitetaan.
2. Java lopulta estää
Java-ohjelmassa finally
lohko suoritetaan aina riippumatta siitä, onko siinä poikkeusta vai ei.
finally
On vapaaehtoista. Ja jokaiselle try
lohkolle voi olla vain yksi finally
lohko.
finally
Lohkon perussyntaksi on:
try ( //code ) catch (ExceptionType1 e1) ( // catch block ) finally ( // finally block always executes )
Jos tapahtuu poikkeus, finally
lohko suoritetaan try… catch
lohkon jälkeen. Muussa tapauksessa se suoritetaan kokeilulohkon jälkeen. Jokaiselle try
lohkolle voi olla vain yksi finally
lohko.
Esimerkki: Java-poikkeusten käsittely viimeisellä lohkolla
class Main ( public static void main(String() args) ( try ( // code that generates exception int divideByZero = 5 / 0; ) catch (ArithmeticException e) ( System.out.println("ArithmeticException => " + e.getMessage()); ) finally ( System.out.println("This is the finally block"); ) ) )
Tuotos
ArithmeticException => / nollalla Tämä on viimeinen lohko
Yllä olevassa esimerkissä jaetaan luku 0: llatry
lohkon sisällä . Tässä tämä koodi tuottaa ArithmeticException
.
catch
Lohko tarttuu poikkeukseen . Ja sitten finally
lohko suoritetaan.
Huomaa : finally
Lohkon käyttö on hyvä käytäntö . Se johtuu siitä, että se voi sisältää tärkeitä puhdistuskoodeja, kuten
- koodi, joka saattaa vahingossa ohittaa palautuksen, jatka tai rikkoa
- tiedoston tai yhteyden sulkeminen
3. Java heittää ja heittää avainsana
Java- throw
avainsanaa käytetään nimenomaisesti yhden poikkeuksen tekemiseen.
Kun olemme throw
poikkeus, ohjelman virta siirtyy try
lohkosta catch
lohkoon.
Esimerkki: Poikkeusten käsittely Java-heittoa käyttämällä
class Main ( public static void divideByZero() ( // throw an exception throw new ArithmeticException("Trying to divide by 0"); ) public static void main(String() args) ( divideByZero(); ) )
Tuotos
Poikkeus säikeessä "main" java.lang.ArithmeticException: Yritetään jakaa 0: lla osoitteessa Main.divideByZero (Main.java:5) Main.mainissa (Main.java:9)
Yllä olevassa esimerkissä olemme nimenomaan heittämällä ArithmeticException
käyttämällä throw
avainsanaa.
Samoin throws
avainsanaa käytetään ilmoittamaan menetelmän sisällä mahdollisesti esiintyvien poikkeusten tyyppi. Sitä käytetään menetelmäilmoituksessa.
Esimerkki: Java heittää avainsanan
import java.io.*; class Main ( // declareing the type of exception public static void findFile() throws IOException ( // code that may generate IOException File newFile = new File("test.txt"); FileInputStream stream = new FileInputStream(newFile); ) public static void main(String() args) ( try ( findFile(); ) catch (IOException e) ( System.out.println(e); ) ) )
Tuotos
java.io.FileNotFoundException: test.txt (järjestelmä ei löydä määritettyä tiedostoa)
Kun suoritamme tämän ohjelman, jos tiedostoa test.txt ei ole olemassa, FileInputStream
heittää luokan, FileNotFoundException
joka laajentaa IOException
luokkaa.
findFile()
Menetelmä määrittää, että IOException
voidaan heittää. main()
Metodikutsuja tätä menetelmää ja käsittelee poikkeus, jos se on heitetty.
Jos menetelmä ei käsittele poikkeuksia, siinä mahdollisesti esiintyvien poikkeusten tyyppi on määriteltävä throws
lausekkeessa.
Saat lisätietoja vierailemalla Java-heitot ja heitot.