Ravnanje z izjemami Java (z primeri)

V vadnici bomo s pomočjo primerov spoznali različne pristope ravnanja z izjemami v Javi.

V zadnji vadnici smo spoznali izjeme Java. Vemo, da izjeme neobičajno zaključijo izvajanje programa.

Zato je pomembno, da obravnavamo izjeme. Tu je seznam različnih pristopov za obravnavo izjem v Javi.

  • poskusite … ujeti blok
  • končno blokiraj
  • vrzi in vrže ključno besedo

1. Poskus Java … ujeti blok

Blok try-catch se uporablja za obravnavo izjem v Javi. Tu je sintaksa try… catchbloka:

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

Tu smo v tryblok postavili kodo, ki bi lahko ustvarila izjemo . Vsakemu trybloku sledi catchblok.

Ko pride do izjeme, jo ujame catchblok. catchBlok ni mogoče uporabiti brez trybloka.

Primer: Obravnava izjem z uporabo poskusa … ulova

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

Izhod

 ArithmeticException => / za nič

V primeru poskušamo število deliti z 0. Tukaj ta koda ustvari izjemo.

Za obravnavo izjeme smo kodo postavili 5 / 0v tryblok. Zdaj, ko pride do izjeme, se preostala koda znotraj trybloka preskoči.

catchBlok ujame izjema in stavki znotraj bloka ulova se izvaja.

Če noben stavek v trybloku ne ustvari izjeme, se catchblok preskoči.

2. Java končno blokira

V Javi se finallyblok vedno izvede ne glede na to, ali obstaja izjema ali ne.

finallyBlok ni obvezna. In za vsak tryblok je lahko samo en finallyblok.

Osnovna sintaksa finallybloka je:

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

Če pride do izjeme, se finallyblok izvede po try… catchbloku. V nasprotnem primeru se izvede po poskusnem bloku. Za vsak tryblok je lahko samo en finallyblok.

Primer: Java Exception Handling z uporabo block nazadnje

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

Izhod

 ArithmeticException => / z nič To je zadnji blok

V zgornjem primeru znotraj bloka delimo število z 0try . Tukaj ta koda generira ArithmeticException.

Izjemo ujame catchblok. In potem se finallyblok izvrši.

Opomba : Uporaba finallybloka je dobra praksa . Ker lahko vključuje pomembne kode za čiščenje, kot so,

  • kodo, ki bi jo lahko slučajno preskočili z vrnitvijo, nadaljevanjem ali prekinitvijo
  • zapiranje datoteke ali povezave

3. Ključna beseda Java throw and throws

Ključna throwbeseda Java se uporablja za izrecno vrnitev ene same izjeme.

Ko smo throwizjema, se tok programa premakne iz trybloka v catchblok.

Primer: Obravnava izjem z uporabo Java throw

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

Izhod

 Izjema v niti "main" java.lang.ArithmeticException: Poskus delitve z 0 na Main.divideByZero (Main.java:5) na Main.main (Main.java:9)

V zgornjem primeru izrecno vržemo ključno besedo ArithmeticExceptionusing throw.

Podobno se throwsključna beseda uporablja za razglasitev vrste izjem, ki bi se lahko pojavile znotraj metode. Uporablja se v deklaraciji metode.

Primer: Java vrže ključno besedo

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

Izhod

 java.io.FileNotFoundException: test.txt (Sistem ne more najti navedene datoteke)

Ko zaženemo ta program, če datoteka test.txt ne obstaja, FileInputStreamvrže a, FileNotFoundExceptionki razširja IOExceptionrazred.

findFile()Metoda določa, da IOExceptionse lahko vrže. main()Metoda zahteva ta metoda in ročaji izjema, če se vrže.

Če metoda ne obravnava izjem, je treba v členu določiti vrsto izjem, ki se lahko pojavijo znotraj nje throws.

Če želite izvedeti več, obiščite Java throw and metws.

Zanimive Članki...