Java-poikkeusten käsittely (esimerkkejä)

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.

Mielenkiintoisia artikkeleita...