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… catch
bloka:
try ( // code ) catch(Exception e) ( // code )
Tu smo v try
blok postavili kodo, ki bi lahko ustvarila izjemo . Vsakemu try
bloku sledi catch
blok.
Ko pride do izjeme, jo ujame catch
blok. catch
Blok ni mogoče uporabiti brez try
bloka.
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 / 0
v try
blok. Zdaj, ko pride do izjeme, se preostala koda znotraj try
bloka preskoči.
catch
Blok ujame izjema in stavki znotraj bloka ulova se izvaja.
Če noben stavek v try
bloku ne ustvari izjeme, se catch
blok preskoči.
2. Java končno blokira
V Javi se finally
blok vedno izvede ne glede na to, ali obstaja izjema ali ne.
finally
Blok ni obvezna. In za vsak try
blok je lahko samo en finally
blok.
Osnovna sintaksa finally
bloka je:
try ( //code ) catch (ExceptionType1 e1) ( // catch block ) finally ( // finally block always executes )
Če pride do izjeme, se finally
blok izvede po try… catch
bloku. V nasprotnem primeru se izvede po poskusnem bloku. Za vsak try
blok je lahko samo en finally
blok.
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 catch
blok. In potem se finally
blok izvrši.
Opomba : Uporaba finally
bloka 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 throw
beseda Java se uporablja za izrecno vrnitev ene same izjeme.
Ko smo throw
izjema, se tok programa premakne iz try
bloka v catch
blok.
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 ArithmeticException
using throw
.
Podobno se throws
ključ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, FileInputStream
vrže a, FileNotFoundException
ki razširja IOException
razred.
findFile()
Metoda določa, da IOException
se 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.