Pengendalian Pengecualian Java (Dengan Contoh)

Dalam tutorial, kita akan belajar tentang pendekatan yang berbeza dari pengendalian pengecualian di Java dengan bantuan contoh.

Dalam tutorial terakhir, kami belajar mengenai pengecualian Java. Kami tahu bahawa pengecualian menghentikan pelaksanaan program secara tidak normal.

Inilah sebabnya mengapa penting untuk menangani pengecualian. Berikut adalah senarai pendekatan yang berbeza untuk menangani pengecualian di Java.

  • cuba… tangkap blok
  • akhirnya menyekat
  • kata kunci balingan dan lempar

1. Java cuba… tangkap blok

Blok try-catch digunakan untuk menangani pengecualian di Java. Inilah sintaksis try… catchblok:

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

Di sini, kami telah meletakkan kod yang mungkin menghasilkan pengecualian di dalam tryblok. Setiap tryblok diikuti oleh catchblok.

Apabila pengecualian berlaku, ia ditangkap oleh catchblok. The catchblok tidak boleh digunakan tanpa tryblok.

Contoh: Pengendalian pengecualian menggunakan cubaan… tangkapan

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

Pengeluaran

 ArithmeticException => / dengan sifar

Sebagai contoh, kami cuba membahagikan nombor dengan 0. Di sini, kod ini menghasilkan pengecualian.

Untuk menangani pengecualian, kami telah meletakkan kod tersebut 5 / 0di dalam tryblok. Sekarang apabila pengecualian berlaku, selebihnya kod di dalam tryblok dilangkau.

The catchblok menangkap pengecualian dan kenyataan di dalam blok tangkapan dilaksanakan.

Sekiranya tidak ada penyataan di tryblok yang menghasilkan pengecualian, catchblok tersebut dilangkau.

2. Java akhirnya menyekat

Di Jawa, finallyblok tersebut selalu dijalankan tidak kira ada pengecualian atau tidak.

The finallyblok adalah pilihan. Dan, untuk setiap tryblok, hanya boleh ada satu finallyblok.

Sintaks asas finallyblok adalah:

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

Sekiranya pengecualian berlaku, finallyblok dijalankan selepas try… catchblok tersebut. Jika tidak, ia dilaksanakan selepas blok cubaan. Untuk setiap tryblok, hanya boleh ada satu finallyblok.

Contoh: Pengendalian Pengecualian Java menggunakan blok akhirnya

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

Pengeluaran

 ArithmeticException => / dengan sifar Ini adalah blok akhirnya

Dalam contoh di atas, kita membahagikan nombor dengan 0 di dalam tryblok. Di sini, kod ini menghasilkan ArithmeticException.

Pengecualian ditangkap oleh catchblok. Dan, finallyblok itu dilaksanakan.

Catatan : Amalan yang baik untuk menggunakan finallyblok. Ini kerana ia boleh merangkumi kod pembersihan penting seperti,

  • kod yang mungkin dilewatkan secara tidak sengaja dengan mengembalikan, meneruskan atau memutuskan
  • menutup fail atau sambungan

3. Kata kunci melempar dan melempar Java

Kata throwkunci Java digunakan untuk secara eksplisit membuang satu pengecualian.

Apabila kita throwterkecuali, aliran program bergerak dari tryblok ke catchblok.

Contoh: Pengendalian pengecualian menggunakan balingan Java

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

Pengeluaran

 Pengecualian dalam utas "main" java.lang.ArithmeticException: Mencuba membahagi dengan 0 di Main.divideByZero (Main.java:5) di Main.main (Main.java:9)

Dalam contoh di atas, kami secara eksplisit membuang ArithmeticExceptionpenggunaan throwkata kunci.

Begitu juga, throwskata kunci digunakan untuk menyatakan jenis pengecualian yang mungkin berlaku dalam kaedah tersebut. Ia digunakan dalam deklarasi kaedah.

Contoh: Java membuang kata kunci

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

Pengeluaran

 java.io.FileNotFoundException: test.txt (Sistem tidak dapat mencari fail yang ditentukan)

Semasa kita menjalankan program ini, jika file test.txt tidak ada, FileInputStreamlemparkan a FileNotFoundExceptionyang meluaskan IOExceptionkelas.

The findFile()kaedah menyatakan bahawa yang IOExceptionboleh dibuang. The main()kaedah memanggil kaedah ini dan boleh mengendalikan pengecualian jika ia dibuang.

Sekiranya kaedah tidak menangani pengecualian, jenis pengecualian yang mungkin berlaku di dalamnya mesti dinyatakan dalam throwsklausa.

Untuk mengetahui lebih lanjut, lawati lemparan dan lemparan Java.

Artikel menarik...