„Java“ išimčių tvarkymas (su pavyzdžiais)

Pamokoje su pavyzdžių pagalba sužinosime apie skirtingus išimčių tvarkymo „Java“ metodus.

Paskutinėje pamokoje sužinojome apie „Java“ išimtis. Mes žinome, kad išimtys nenormaliai nutraukia programos vykdymą.

Štai kodėl svarbu tvarkyti išimtis. Čia pateikiamas įvairių būdų, kaip tvarkyti išimtis „Java“, sąrašas.

  • pabandyk … pagauti bloką
  • pagaliau blokuoti
  • metimas ir metimas raktinis žodis

1. „Java“ pabandykite … sugavimo bloką

„Try-catch“ blokas naudojamas „Java“ išimtims tvarkyti. Štai try… catchbloko sintaksė :

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

Čia į trybloką įdėjome kodą, kuris gali generuoti išimtį . Po kiekvieno trybloko seka catchblokas.

Kai atsiranda išimtis, ją užklumpa catchblokas. catchBlokas negali būti naudojami be trybloko.

Pavyzdys: išimčių tvarkymas naudojant „try… catch“

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

Rezultatas

 Aritmetinė išimtis => / nuliu

Pavyzdyje bandome skaičių padalyti iš 0. Čia šis kodas sukuria išimtį.

Norėdami išimtis, kodą įdėjome 5 / 0į trybloką. Dabar, kai įvyksta išimtis, likęs trybloko kodas praleidžiamas.

catchBlokas pagauna išimtis ir pareiškimai viduje sugavimo blokas yra įvykdytas.

Jei nė vienas iš trybloko sakinių nesukuria išimties, catchblokas praleidžiamas.

2. „Java“ pagaliau užblokuoja

„Java“ finallyblokas visada vykdomas, nesvarbu, ar yra išimtis, ar ne.

finallyBlokas yra neprivalomas. Kiekvienam tryblokui gali būti tik vienas finallyblokas.

Pagrindinė finallybloko sintaksė yra:

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

Jei įvyksta išimtis, finallyblokas vykdomas po try… catchbloko. Priešingu atveju jis vykdomas po bandymo bloko. Kiekvienam tryblokui gali būti tik vienas finallyblokas.

Pavyzdys: „Java“ išimčių tvarkymas naudojant galutinai 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"); ) ) )

Rezultatas

 ArithmeticException => / iki nulio Tai galutinis blokas

Ankstesniame pavyzdyje skaičių padalijame iš 0try bloko viduje . Čia šis kodas sukuria ArithmeticException.

Išimtį užklumpa catchblokas. Tada finallyblokas vykdomas.

Pastaba : Tai yra gera praktika naudoti finallybloką. Taip yra todėl, kad joje gali būti svarbių valymo kodų, pvz.,

  • kodas, kuris gali būti netyčia praleistas grįžus, tęskite arba sugadinkite
  • uždarant failą ar ryšį

3. Java metimų ir metimų raktinis žodis

„Java“ throwraktinis žodis naudojamas aiškiai išskirti vieną išimtį.

Kai mes darome throwišimtį, programos srautas juda iš trybloko į catchbloką.

Pavyzdys: Išimčių tvarkymas naudojant „Java“ metimą

 class Main ( public static void divideByZero() ( // throw an exception 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 adresu Main.divideByZero (Main.java:5) ne Main.main (Main.java:9)

Ankstesniame pavyzdyje mes aiškiai metame, kaip ArithmeticExceptionnaudoti throwraktinį žodį.

Panašiai throwsraktinis žodis naudojamas deklaruojant išimčių tipą, kuris gali atsirasti taikant metodą. Jis naudojamas metodo deklaracijoje.

Pavyzdys: „Java“ meta raktinį žodį

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

Rezultatas

 java.io.FileNotFoundException: test.txt (sistema neranda nurodyto failo)

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

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

Jei metodas netvarko išimčių, jame gali būti nurodytas išimčių tipas throws.

Norėdami sužinoti daugiau, apsilankykite „Java“ metimuose ir metimuose.

Įdomios straipsniai...