Java met un met atslēgas vārdu

Šajā apmācībā mēs iemācīsimies izmantot metienu un metienu atslēgvārdu izņēmumu apstrādei, izmantojot piemērus.

Java izņēmumus var iedalīt divos veidos:

  • Neatzīmētajās Izņēmumi: Tie nav pārbaudīti kompilēšanas laikā, bet palaist-time.For piemēram ArithmeticException, NullPointerException, ArrayIndexOutOfBoundsException, izņēmumi saskaņā ar Errorklasi, utt
  • Pārbaudītie izņēmumi: tie tiek pārbaudīti sastādīšanas laikā. Piemēram, IOException, InterruptedExceptionuc

Skatiet Java izņēmumus, lai detalizēti uzzinātu par pārbaudītiem un nepārbaudītiem izņēmumiem.

Parasti mums nav jārīkojas ar nepārbaudītiem izņēmumiem. Tas ir tāpēc, ka nepārbaudīti izņēmumi rodas programmēšanas kļūdu dēļ. Tā ir laba prakse tos labot, nevis rīkoties.

Šajā apmācībā tagad galvenā uzmanība tiks pievērsta tam, kā rīkoties ar pārbaudītajiem izņēmumiem, izmantojot throwun throws.

Java met atslēgvārdu

throwsMetodes deklarācijā mēs izmantojam atslēgvārdu, lai paziņotu, kādi izņēmumi tajā varētu rasties.

Tās sintakse ir:

 accessModifier returnType methodName() throws ExceptionType1, ExceptionType2… ( // code ) 

Kā redzat no iepriekš minētās sintakses, mēs varam izmantot throwsvairāku izņēmumu deklarēšanai.

1. piemērs: Java iemet atslēgvārdu

 import java.io.*; class Main ( public static void findFile() throws IOException ( // code that may produce 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 (nav šāda faila vai direktorija) 

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

Ja metode neizskata izņēmumus, throwsklauzulā ir jānorāda tajā iespējamo izņēmumu veids, lai zvanu kaudzē augšpusē esošās metodes tos varētu apstrādāt vai norādīt, izmantojot throwspašas atslēgvārdu.

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

Izmetot vairākus izņēmumus

Lūk, kā mēs varam izmest vairākus izņēmumus, izmantojot throwsatslēgvārdu.

 import java.io.*; class Main ( public static void findFile() throws NullPointerException, IOException, InvalidClassException ( // code that may produce NullPointerException… … … // code that may produce IOException… … … // code that may produce InvalidClassException… … … ) public static void main(String() args) ( try( findFile(); ) catch(IOException e1)( System.out.println(e1.getMessage()); ) catch(InvalidClassException e2)( System.out.println(e2.getMessage()); ) ) ) 

Lūk, tad findFile()metode ir noteikts, ka tā var mest NullPointerException, IOExceptionun InvalidClassExceptiontās throwspunktā.

Ņemiet vērā, ka mēs neesam apstrādājuši NullPointerException. Tas ir tāpēc, ka tas ir nepārbaudīts izņēmums. Nav nepieciešams to norādīt throwsklauzulā un rīkoties ar to.

izmet atslēgvārdu Vs. mēģini … noķert … beidzot

Var būt vairākas metodes, kas var izraisīt izņēmumus. try… catchKatras metodes rakstīšana būs garlaicīga, un kods kļūst garš un mazāk lasāms.

throws ir noderīgs arī tad, ja esat atzīmējis izņēmumu (izņēmums, kas jāizskata), kuru nevēlaties noķert pašreizējā metodē.

Java mest atslēgvārds

throwAtslēgvārds tiek izmantots, lai nepārprotami mest vienu izņēmumu.

Kad tiek izmests izņēmums, programmas izpildes plūsma pāriet no trybloka uz catchbloku. throwAtslēgvārdu mēs izmantojam metodes ietvaros.

Tās sintakse ir:

 throw throwableObject;

Metams objekts ir klases Throwablevai klases apakšklases gadījums Throwable.

2. piemērs: Java mest atslēgvārds

 class Main ( public static void divideByZero() ( 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ēģina sadalīt ar 0 vietnē Main.divideByZero (Main.java:3) pie Main.main (Main.java:7) izejas statusa 1 

Šajā piemērā mēs skaidri izsakām ArithmeticException.

Piezīme: ArithmeticException ir nepārbaudīts izņēmums. Parasti nav nepieciešams rīkoties ar nepārbaudītiem izņēmumiem.

3. piemērs: izmestais izņēmums

 import java.io.*; class Main ( public static void findFile() throws IOException ( throw new IOException("File not found"); ) public static void main(String() args) ( try ( findFile(); System.out.println("Rest of code in try block"); ) catch (IOException e) ( System.out.println(e.getMessage()); ) ) ) 

Rezultāts

 Fails nav atrasts 

findFile()Metode met IOExceptionar ziņu, mēs nodots tā konstruktors.

Ņemiet vērā, ka, tā kā tas ir pārbaudīts izņēmums, mums tas jānorāda throwsklauzulā.

Metodēm, kas izsauc šo findFile()metodi, ir jāapstrādā šis izņēmums vai arī jānorāda, izmantojot throwspašu atslēgvārdu.

Mēs esam apstrādājuši šo izņēmumu main()metodē. Programmas izpildes plūsma pāriet no trybloka uz catchbloku, kad tiek izmests izņēmums. Tātad pārējais trybloka kods tiek izlaists un catchblokā esošie paziņojumi tiek izpildīti.

Interesanti raksti...