Rukovanje Java iznimkama (s primjerima)

U vodiču ćemo uz primjere naučiti o različitim pristupima rukovanja iznimkama u Javi.

U prošlom uputstvu saznali smo o Java iznimkama. Znamo da iznimke nenormalno prekidaju izvršavanje programa.

Zbog toga je važno postupati s iznimkama. Evo popisa različitih pristupa za rukovanje iznimkama u Javi.

  • pokušajte … uhvatiti blok
  • konačno blokirati
  • baci i baci ključnu riječ

1. Java pokušaj … catch block

Blok try-catch koristi se za obradu iznimaka u Javi. Evo sintakse try… catchbloka:

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

Ovdje smo unutar trybloka postavili kôd koji bi mogao generirati iznimku . Nakon svakog trybloka slijedi catchblok.

Kad se dogodi iznimka, catchblok je uhvati . catchBlok ne može se koristiti bez trybloka.

Primjer: Obrada iznimke pomoću pokušaja… ulov

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

Izlaz

 ArithmeticException => / nula

U primjeru pokušavamo podijeliti broj sa 0. Ovdje ovaj kod generira iznimku.

Da bismo riješili iznimku, stavili smo kôd 5 / 0unutar trybloka. Sada kada se dogodi iznimka, ostatak koda unutar trybloka se preskače.

catchBlok hvata iznimka i izvještaji unutar catch blok se izvršava.

Ako niti jedan izraz u trybloku ne generira iznimku, catchblok se preskače.

2. Java konačno blokira

U Javi se finallyblok uvijek izvršava bez obzira postoji li iznimka ili ne.

finallyBlok je opcionalno. I za svaki tryblok može postojati samo jedan finallyblok.

Osnovna sintaksa finallybloka je:

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

Ako se dogodi iznimka, finallyblok se izvršava nakon try… catchbloka. Inače se izvršava nakon bloka try. Za svaki tryblok može postojati samo jedan finallyblok.

Primjer: Rukovanje izuzecima Java koristeći konačno blok

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

Izlaz

 ArithmeticException => / po nuli Ovo je napokon blok

U gornjem primjeru unutar bloka dijelimo broj s 0try . Ovdje ovaj kod generira ArithmeticException.

Izuzetak zahvaća catchblok. I tada finallyse izvršava blok.

Napomena : Dobra je praksa koristiti finallyblok. To je zato što može sadržavati važne kodove za čišćenje poput,

  • kôd koji se slučajno može preskočiti povratkom, nastavkom ili prekidom
  • zatvaranje datoteke ili veze

3. Java bacanje i bacanje ključne riječi

throwKljučna riječ Java koristi se za izričito izbacivanje jedne iznimke.

Kad smo throwiznimka, tok programa se kreće od trybloka do catchbloka.

Primjer: Rukovanje iznimkama pomoću Java bacanja

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

Izlaz

 Exception in thread "main" java.lang.ArithmeticException: Trying to divide by 0 at Main.divideByZero(Main.java:5) at Main.main(Main.java:9)

In the above example, we are explicitly throwing the ArithmeticException using the throw keyword.

Similarly, the throws keyword is used to declare the type of exceptions that might occur within the method. It is used in the method declaration.

Example: Java throws keyword

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

Output

 java.io.FileNotFoundException: test.txt (The system cannot find the file specified)

When we run this program, if the file test.txt does not exist, FileInputStream throws a FileNotFoundException which extends the IOException class.

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

Ako metoda ne obrađuje iznimke, vrsta iznimki koje se mogu pojaviti unutar nje mora biti navedena u throwsklauzuli.

Da biste saznali više, posjetite Java bacanje i bacanje.

Zanimljivi članci...