Java bacanje i bacanje Ključna riječ

U ovom uputstvu naučit ćemo koristiti ključnu riječ throw and throws za rukovanje iznimkama uz pomoć primjera.

U Javi se iznimke mogu kategorizirati u dvije vrste:

  • Nepotvrđenim iznimke: Oni nisu provjereni u prevođenja vremenu, ali u vožnji-time.For primjer: ArithmeticException, NullPointerException, ArrayIndexOutOfBoundsException, iznimke pod Errorklase, itd
  • Označene iznimke: Provjeravaju se u vrijeme prevođenja. Na primjer, IOException, InterruptedException, itd

Pogledajte Java iznimke kako biste detaljno saznali o provjerenim i neprovjerenim iznimkama.

Obično ne trebamo postupati s neprovjerenim iznimkama. To je zato što se neprovjerene iznimke javljaju zbog programskih pogrešaka. I dobra je praksa ispraviti ih umjesto rukovati njima.

Ovaj će se vodič sada usredotočiti na postupanje s provjerenim iznimkama pomoću throwi throws.

Java baca ključnu riječ

Koristimo throwsključnu riječ u deklaraciji metode da bismo deklarirali vrstu iznimki koje bi se mogle pojaviti u njoj.

Njegova sintaksa je:

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

Kao što možete vidjeti iz gornje sintakse, možemo koristiti throwsza deklariranje višestrukih iznimaka.

Primjer 1: Java baca ključnu riječ

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

Izlaz

 java.io.FileNotFoundException: test.txt (Nema takve datoteke ili direktorija) 

Kada pokrenemo ovaj program, ako datoteka test.txtne postoji, FileInputStreambaca se a FileNotFoundExceptionkoja proširuje IOExceptionklasu.

Ako se metoda ne obrađuje s iznimkama, vrsta iznimki koje se mogu pojaviti unutar nje mora biti navedena u throwsklauzuli, tako da metode dalje u snopu poziva mogu s njima postupati ili ih odrediti pomoću throwssame ključne riječi.

findFile()Metoda navodi da IOExceptionmože biti izbačen. main()Metoda naziva ovu metodu i obrađuje iznimku ako je bačena.

Bacanje višestrukih iznimaka

Evo kako možemo izbaciti višestruke iznimke pomoću throwsključne riječi.

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

Ovdje se findFile()način određuje da se može baciti NullPointerException, IOExceptionte InvalidClassExceptionu svom throwsčlanku.

Imajte na umu da nismo obrađivali NullPointerException. To je zato što je to neprovjerena iznimka. Nije potrebno to navesti u throwsklauzuli i rukovati njime.

baca ključnu riječ vs. pokušaj … uhvati … konačno

Postoji nekoliko metoda koje mogu uzrokovati iznimke. Pisanje try… catchza svaku metodu bit će zamorno, a kôd postaje dugačak i manje čitljiv.

throws je korisno i kada ste označili iznimku (iznimku kojom se mora rukovati) koju ne želite uhvatiti u svojoj trenutnoj metodi.

Ključna riječ Java bacanje

throwKljučna riječ se koristi za izravno baciti jednu iznimku.

Kada se izuzme izuzetak, tok izvođenja programa prenosi se iz trybloka u catchblok. Koristimo throwključnu riječ unutar metode.

Njegova sintaksa je:

 throw throwableObject;

Predmet koji se može baciti je instanca klase Throwableili podklase Throwableklase.

Primjer 2: Ključna riječ Java bacanje

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

Izlaz

 Iznimka u niti "main" java.lang.ArithmeticException: Pokušaj dijeljenja s 0 na Main.divideByZero (Main.java:3) na Main.main (Main.java:7) statusu izlaza 1 

U ovom primjeru izričito bacamo ArithmeticException.

Napomena: ArithmeticException je neprovjerena iznimka. Obično nije potrebno postupati s neprovjerenim iznimkama.

Primjer 3: Bacanje provjerene iznimke

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

Izlaz

 Datoteka nije pronađena 

findFile()Metoda baca IOExceptions porukom smo prošli na svom graditelju.

Imajte na umu da, budući da je riječ o provjerenoj iznimci, moramo je navesti u throwsklauzuli.

Metode koje pozivaju ovu findFile()metodu moraju ili obraditi ovu iznimku ili je odrediti pomoću throwssame ključne riječi.

Ovu smo iznimku obradili u main()metodi. Tok izvođenja programa prenosi se iz trybloka u catchblok kada se izuzme izuzetak. Dakle, ostatak koda u trybloku se preskače i catchizvršavaju se izrazi u bloku.

Zanimljivi članci...