Java vrže in vrže ključno besedo

V tej vadnici se bomo s pomočjo primerov naučili uporabljati ključno besedo throw and throws za obravnavo izjem.

V Javi lahko izjeme razvrstimo v dve vrsti:

  • Neizbrani Izjeme: Niso preverja ob prevajanju času, vendar na doživljenjsko time.For primer: ArithmeticException, NullPointerException, ArrayIndexOutOfBoundsException, Izjeme iz Errorrazreda, itd
  • Preverjene izjeme: preverijo se v času prevajanja. Na primer IOException, InterruptedExceptionitd

Za podrobnosti o preverjenih in nepreverjenih izjemah glejte Izjeme Java.

Običajno nam ni treba obravnavati nepreverjenih izjem. Razlog za to je, da se zaradi programskih napak pojavijo nepreverjene izjeme. In dobra praksa je, da jih popravite, namesto da bi z njimi ravnali.

Ta vadnica se bo zdaj osredotočila na to, kako ravnati s preverjenimi izjemami z uporabo throwin throws.

Java vrže ključno besedo

Ključno throwsbesedo v deklaraciji metode uporabljamo za razglasitev vrste izjem, ki bi se lahko pojavile v njej.

Njegova sintaksa je:

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

Kot lahko vidite iz zgornje sintakse, lahko throwsz njo prijavimo več izjem.

Primer 1: Java vrže ključno besedo

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

Izhod

 java.io.FileNotFoundException: test.txt (Ni takšne datoteke ali imenika) 

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

Če metoda ne obravnava izjem, je treba v členu določiti vrsto izjem, ki se lahko pojavijo v njej, throwstako da jih metode, ki se nahajajo v nizu klicev, lahko obravnavajo ali določijo s pomočjo throwsključne besede same.

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

Metanje več izjem

Tukaj je opisano, kako lahko z uporabo throwsključne besede vržemo več izjem .

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

Tukaj je findFile()metoda določa, da lahko vrgel NullPointerException, IOExceptionin InvalidClassExceptionv throwsklavzuli.

Upoštevajte, da nismo obdelali NullPointerException. To je zato, ker gre za nepreverjeno izjemo. Ni ga treba določiti v throwsklavzuli in obravnavati.

vrže ključno besedo Vs. poskusite … ulovite … končno

Izjeme lahko povzročijo več metod. Pisanje try… catchza vsako metodo bo dolgočasno in koda postane dolga in manj berljiva.

throws je uporaben tudi, če ste označili izjemo (izjemo, ki jo je treba obdelati), ki je ne želite ujeti v trenutni metodi.

Ključna beseda Java throw

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

Ko se vrne izjema, se tok izvajanja programa prenese iz trybloka v catchblok. Ključno throwbesedo uporabljamo znotraj metode.

Njegova sintaksa je:

 throw throwableObject;

Predmet, ki ga je mogoče vrniti, je primerek razreda Throwableali podrazreda Throwablerazreda.

Primer 2: Ključna beseda Java throw

 class Main ( public static void divideByZero() ( 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:3) na Main.main (Main.java:7) status izhoda 1 

V tem primeru izrecno vržemo ArithmeticException.

Opomba: ArithmeticException je nepreverjena izjema. Običajno ni treba obdelovati nepreverjenih izjem.

3. primer: metanje preverjene izjeme

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

Izhod

 Datoteka ni najdena 

findFile()Metoda vrže IOExceptions sporočilom smo opravili svoje gradbenik.

Ker gre za preverjeno izjemo, jo moramo določiti v throwsstavku.

Metode, ki kličejo to findFile()metodo, morajo to izjemo obvladati ali pa jo throwssami določiti s ključno besedo.

To izjemo smo obravnavali v main()metodi. Tok izvrševanja programa se prenaša iz trybloka v catchblok, ko se vrne izjema. Torej, preostala koda v trybloku se preskoči in stavki v catchbloku se izvršijo.

Zanimive Članki...