Java izņēmumu apstrāde (ar piemēriem)

Apmācībā mēs uzzināsim par dažādām pieejām izņēmumu apstrādei Java ar piemēru palīdzību.

Pēdējā apmācībā mēs uzzinājām par Java izņēmumiem. Mēs zinām, ka izņēmumi nenormāli pārtrauc programmas izpildi.

Tāpēc ir svarīgi rīkoties ar izņēmumiem. Šeit ir saraksts ar dažādām pieejām, kā rīkoties ar Java izņēmumiem.

  • mēģiniet … noķert bloku
  • beidzot bloķēt
  • met un met atslēgvārds

1. Java mēģiniet … noķert bloku

Mēģinājumu noķert bloku izmanto, lai apstrādātu Java izņēmumus. Šeit ir try… catchbloka sintakse :

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

Šeit trybloka iekšpusē esam ievietojuši kodu, kas varētu radīt izņēmumu . Katram tryblokam seko catchbloks.

Kad rodas izņēmums, to uztver catchbloks. catchBloks nevar izmantot bez trybloka.

Piemērs: izņēmumu apstrāde, izmantojot try… catch

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

Rezultāts

 Aritmētiskais izņēmums => / par nulli

Piemērā mēs mēģinām sadalīt skaitli ar 0. Šis kods rada izņēmumu.

Lai apstrādātu izņēmumu, mēs esam kodu, 5 / 0iekšpusē trybloku. Tagad, kad rodas izņēmums, pārējais trybloka iekšējais kods tiek izlaists.

catchBloks nozveju izņēmums un paziņojumi iekšpusē catch blokā tiek izpildīts.

Ja neviens no trybloka izteikumiem nerada izņēmumu, catchbloks tiek izlaists.

2. Java beidzot bloķē

Java finallybloku vienmēr izpilda neatkarīgi no tā, vai ir kāds izņēmums.

finallyBloks ir pēc izvēles. Katram tryblokam var būt tikai viens finallybloks.

finallyBloķēšanas pamata sintakse ir šāda:

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

Ja rodas izņēmums, finallybloks tiek izpildīts pēc try… catchbloka. Pretējā gadījumā tas tiek izpildīts pēc mēģinājuma bloķēšanas. Katram tryblokam var būt tikai viens finallybloks.

Piemērs: Java izņēmumu apstrāde, izmantojot beidzot bloķēt

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

Rezultāts

 ArithmeticException => / ar nulli Šis ir pēdējais bloks

Iepriekš minētajā piemērā mēs sadalām skaitli ar 0try bloka iekšpusē . Šis kods ģenerē ArithmeticException.

Izņēmumu uztver catchbloks. Un pēc tam finallybloķēšana tiek izpildīta.

Piezīme : finallyBloka izmantošana ir laba prakse . Tas ir tāpēc, ka tajā var iekļaut svarīgus tīrīšanas kodus, piemēram,

  • kods, kuru nejauši var izlaist, atgriežoties, turpinot vai salauzt
  • aizverot failu vai savienojumu

3. Java metienu un metienu atslēgvārds

Java throwatslēgvārds tiek izmantots, lai skaidri izteiktu vienu izņēmumu.

Kad mēs esam throwizņēmums, programmas plūsma pāriet no trybloka uz catchbloku.

Piemērs: izņēmumu apstrāde, izmantojot Java mest

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

Rezultāts

 Izņēmums pavedienā "main" java.lang.ArithmeticException: mēģinājums sadalīt ar 0 vietnē Main.divideByZero (Main.java:5) vietnē Main.main (Main.java:9)

Iepriekš minētajā piemērā, mēs skaidri metot ArithmeticExceptionizmantojot throwatslēgvārdu.

Līdzīgi throwsatslēgvārds tiek izmantots, lai paziņotu par izņēmumu veidu, kas varētu rasties metodē. To izmanto metodes deklarācijā.

Piemērs: Java iemet atslēgvārdu

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

Rezultāts

 java.io.FileNotFoundException: test.txt (sistēma nevar atrast norādīto failu)

Kad palaižam šo programmu, ja fails test.txt neeksistē, FileInputStreammet a, FileNotFoundExceptionkas paplašina IOExceptionklasi.

findFile()Metode nosaka, ka IOExceptionvar tikt izmesti. main()Metode prasa šo metodi un rokturi izņēmumu, ja tas ir izmet.

Ja metode neizskata izņēmumus, throwsklauzulā jānorāda izņēmumu veids, kas tajā var rasties .

Lai uzzinātu vairāk, apmeklējiet Java metienus un metienus.

Interesanti raksti...