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… catchlauseen syntaksi :
try ( // code ) catch(Exception e) ( // code )
Tässä olemme sijoittaneet koodin, joka saattaa tuottaa poikkeuksen trylohkon sisään. Jokaista trylohkoa seuraa catchlohko.
Kun poikkeus tapahtuu, catchlohko tarttuu siihen. catchLohko ei voi käyttää ilman trylohko.
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 / 0sisällä trylohko. Nyt kun poikkeus tapahtuu, loput koodista trylohkon sisällä ohitetaan.
catchLohko saaliit poikkeus ja lausunnot sisällä catch suoritetaan.
Jos mikään lauseen lauseista ei tryluo poikkeusta, catchlohko ohitetaan.
2. Java lopulta estää
Java-ohjelmassa finallylohko suoritetaan aina riippumatta siitä, onko siinä poikkeusta vai ei.
finallyOn vapaaehtoista. Ja jokaiselle trylohkolle voi olla vain yksi finallylohko.
finallyLohkon perussyntaksi on:
try ( //code ) catch (ExceptionType1 e1) ( // catch block ) finally ( // finally block always executes )
Jos tapahtuu poikkeus, finallylohko suoritetaan try… catchlohkon jälkeen. Muussa tapauksessa se suoritetaan kokeilulohkon jälkeen. Jokaiselle trylohkolle voi olla vain yksi finallylohko.
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.
catchLohko tarttuu poikkeukseen . Ja sitten finallylohko suoritetaan.
Huomaa : finallyLohkon 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- throwavainsanaa käytetään nimenomaisesti yhden poikkeuksen tekemiseen.
Kun olemme throwpoikkeus, ohjelman virta siirtyy trylohkosta catchlohkoon.
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ä ArithmeticExceptionkäyttämällä throwavainsanaa.
Samoin throwsavainsanaa 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, FileInputStreamheittää luokan, FileNotFoundExceptionjoka laajentaa IOExceptionluokkaa.
findFile()Menetelmä määrittää, että IOExceptionvoidaan 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ä throwslausekkeessa.
Saat lisätietoja vierailemalla Java-heitot ja heitot.








