Java meta ir meta Raktažodis

Šioje pamokoje išmoksime naudoti metimo ir metimo raktinį žodį, kad būtų galima tvarkyti išimtis, naudojant pavyzdžius.

„Java“ išimtis galima suskirstyti į du tipus:

  • Nepažymėjus Išimtys: Jie nėra patikrintas kompiliavimo metu, bet ne paleisti-time.For Pavyzdžiui: ArithmeticException, NullPointerException, ArrayIndexOutOfBoundsException, išimtys pagal Errorklasę, ir tt
  • Pažymėtos išimtys: jos tikrinamos kompiliavimo metu. Pavyzdžiui IOException,, InterruptedExceptionir kt.

Norėdami sužinoti išsamiau apie patikrintas ir nepažymėtas išimtis, skaitykite „Java“ išimtis.

Paprastai mums nereikia tvarkyti nepatikrintų išimčių. Taip yra todėl, kad nepatikrintos išimtys atsiranda dėl programavimo klaidų. Geriausia juos taisyti, o ne tvarkyti.

Šioje pamokoje dabar daugiausia dėmesio bus skiriama patikrintoms išimtims, naudojant throwir throws.

Java meta raktinį žodį

Mes naudojame throwsraktažodį metodas deklaracijoje deklaruoti išimčių, kad gali atsirasti joje tipą.

Jo sintaksė yra:

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

Kaip matote iš pirmiau nurodytos sintaksės, galime naudoti throwsdeklaruodami kelias išimtis.

1 pavyzdys: „Java“ meta raktinį žodį

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

Rezultatas

 java.io.FileNotFoundException: test.txt (tokio failo ar katalogo nėra) 

Kai paleidžiame šią programą, jei failo test.txtnėra, FileInputStreamišmeta a, FileNotFoundExceptionkuris pratęsia IOExceptionklasę.

Jei metodas netvarko išimčių, išlygų, kurios gali atsirasti joje, tipas turi būti nurodytas throwsstraipsnyje, kad metodai, esantys aukščiau skambučių kamino, galėtų jas tvarkyti arba nurodyti patys naudodami throwsraktinį žodį.

findFile()Metodas nurodo, kad IOExceptiongali būti išmestas. main()Metodas reikalauja šį metodą ir rankenos išimtį, jei jis yra išmestas.

Išmesti kelias išimtis

Štai kaip galime išskirti kelias išimtis naudodami throwsraktinį žodį.

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

Čia findFile()metodas nurodo, kad jis gali mesti NullPointerException, IOExceptionir InvalidClassExceptionjos throwssąlygos.

Atkreipkite dėmesį, kad mes netvarkėme NullPointerException. Taip yra todėl, kad tai nėra patikrinta išimtis. Nebūtina jo nurodyti throwssąlygoje ir tvarkyti.

meta raktinį žodį Vs. pabandyk … pagauti … pagaliau

Gali būti keli būdai, galintys sukelti išimtis. try… catchKiekvieno metodo rašymas bus nuobodus, kodas taps ilgas ir mažiau įskaitomas.

throws taip pat naudinga, kai pažymėjote išimtį (išimtį, kurią reikia tvarkyti), kurios nenorite sugauti taikydami dabartinį metodą.

„Java“ metimo raktinis žodis

throwRaktažodis naudojamas aiškiai mesti vieną išimtį.

Kai išmetama išimtis, programos vykdymo srautas pereina iš trybloko į catchbloką. Raktinį throwžodį naudojame metode.

Jo sintaksė yra:

 throw throwableObject;

Metamas daiktas yra klasės Throwablearba klasės poklasio egzempliorius Throwable.

2 pavyzdys: „Java“ metimo raktinis žodis

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

Rezultatas

 Išimtis temoje „main“ java.lang.ArithmeticException: bandoma padalyti iš 0 iš Main.divideByZero (Main.java:3) at Main.main (Main.java:7) išėjimo būsenos 1 

Šiame pavyzdyje mes aiškiai metame ArithmeticException.

Pastaba: ArithmeticException yra nepatikrinta išimtis. Paprastai nebūtina tvarkyti nepatikrintų išimčių.

3 pavyzdys: metimo patikrinta išimtis

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

Rezultatas

 Failas nerastas 

findFile()Metodas metimų IOExceptionsu pranešimu mes išlaikė savo konstruktorius.

Atkreipkite dėmesį, kad kadangi tai yra pažymėta išimtis, turime ją nurodyti throwssąlygoje.

Metodai, kurie vadina šį findFile()metodą, turi tvarkyti šią išimtį arba nurodyti ją throwspatys naudodami raktinį žodį.

Mes išnagrinėjome šią išimtį taikydami main()metodą. Programos vykdymo srautas perkeliamas iš trybloko į catchbloką, kai išmetama išimtis. Taigi, likęs trybloko kodas praleidžiamas ir catchvykdomi sakiniai bloke.

Įdomios straipsniai...