Java erandite käitlemine (koos näidetega)

Õpetuses õpime näidete abil tundma Java erandite käsitlemise erinevaid lähenemisviise.

Viimases õpetuses õppisime Java erandeid. Me teame, et erandid lõpetavad programmi täitmise ebanormaalselt.

Seetõttu on oluline käsitleda erandeid. Siin on loetelu Java-s kasutatavate erandite käsitlemise erinevatest lähenemisviisidest.

  • proovige … püüdke plokk
  • lõpuks blokeerida
  • viska ja viskab märksõna

1. Java proovige … püüdeplokk

Proovi püüdmise plokki kasutatakse Java erandite käsitlemiseks. Siin on try… catchploki süntaks :

 try ( // code ) catch(Exception e) ( // code )

Siia oleme paigutanud tryploki sisse koodi, mis võib tekitada erandi . Igale tryplokile järgneb catchplokk.

Erandi ilmnemisel jääb see catchbloki haardesse. catchPlokk ei saa kasutada ilma tryblokeerida.

Näide: erandite käsitlemine try … catch abil

 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()); ) ) )

Väljund

 Aritmeetiline erand => / nulliga

Näites püüame arvu jagada 0. Siin loob see kood erandi.

Selleks et tulla toime erand, oleme pannud koodi 5 / 0sees tryblokeerida. Kui tekib erand, jäetakse ülejäänud kood tryploki sees vahele.

catchPlokk püüab välja arvatud ja avaldused sees saagi plokk täidetakse.

Kui ükski tryploki lause ei tekita erandit, catchjäetakse see plokk vahele.

2. Java lõpuks blokeerib

Java-s finallykäivitatakse plokk alati, olenemata sellest, kas on erand või mitte.

finallyPlokk on valikuline. Ja iga tryploki jaoks võib olla ainult üks finallyplokk.

Bloki finallypõhisüntaks on:

 try ( //code ) catch (ExceptionType1 e1) ( // catch block ) finally ( // finally block always executes )

Erandi ilmnemisel finallykäivitatakse try… catchplokk pärast plokki. Vastasel juhul käivitatakse see pärast prooviblokki. Iga tryploki jaoks võib olla ainult üks finallyplokk.

Näide: Java erandkäsitlus, kasutades viimast plokki

 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"); ) ) )

Väljund

 ArithmeticException => / nulliga See on viimane plokk

Ülaltoodud näites jagame arvu ploki sees 0-gatry . Siin genereerib see kood ArithmeticException.

Erand on catchblokeeritud. Ja siis finallyblokeeritakse.

Märkus : Bloki kasutamine on hea tava finally. Sellepärast, et see võib sisaldada olulisi puhastuskoode, näiteks

  • kood, mille tagasitulek võib kogemata vahele jätta, jätkata või puruneda
  • faili või ühenduse sulgemine

3. Java viska ja viskab märksõna

Java throwmärksõna kasutatakse selgesõnaliselt ühe erandi tegemiseks.

Kui me oleme throwerand, liigub programmi voog tryplokist catchplokki.

Näide: erandkäsitlus Java viskega

 class Main ( public static void divideByZero() ( // throw an exception throw new ArithmeticException("Trying to divide by 0"); ) public static void main(String() args) ( divideByZero(); ) )

Väljund

 Erand lõimes "main" java.lang.ArithmeticException: proovitakse jagada 0-ga aadressil Main.divideByZero (Main.java:5) aadressil Main.main (Main.java:9)

Eespool toodud näites, oleme selgelt viskamine ArithmeticExceptionkasutades throwmärksõna.

Samamoodi kasutatakse throwsmärksõna meetodi raames esinevate erandite tüübi deklareerimiseks. Seda kasutatakse meetodi deklaratsioonis.

Näide: Java viskab märksõna

 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); ) ) )

Väljund

 java.io.FileNotFoundException: test.txt (süsteem ei leia määratud faili)

Kui faili test.txt pole, käivitame selle programmi käivitades FileInputStreama, FileNotFoundExceptionmis laiendab IOExceptionklassi.

findFile()Meetod täpsustatakse, et IOExceptionvõib visata. main()Meetod nõuab see meetod ja käepidemed, välja arvatud juhul, kui see on visatud.

Kui meetod ei käsitle erandeid, tuleb throwsklauslis täpsustada selle sees esineda võivate erandite tüüp .

Lisateabe saamiseks külastage Java viskeid ja viskeid.

Huvitavad Artiklid...