Penanganan Pengecualian Java (Dengan Contoh)

Dalam tutorial, kita akan belajar tentang berbagai pendekatan penanganan pengecualian di Java dengan bantuan contoh.

Di tutorial terakhir, kita belajar tentang pengecualian Java. Kami tahu bahwa pengecualian secara tidak normal menghentikan eksekusi program.

Inilah mengapa penting untuk menangani pengecualian. Berikut daftar pendekatan berbeda untuk menangani pengecualian di Java.

  • coba … tangkap blok
  • akhirnya memblokir
  • melempar dan melempar kata kunci

1. Java coba … blok tangkap

Blok try-catch digunakan untuk menangani pengecualian di Java. Berikut sintaks try… catchblok:

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

Di sini, kami telah menempatkan kode yang mungkin menghasilkan pengecualian di dalam tryblok. Setiap tryblok diikuti oleh satu catchblok.

Ketika pengecualian terjadi, itu ditangkap oleh catchblok. The catchblok tidak dapat digunakan tanpa tryblok.

Contoh: Penanganan pengecualian menggunakan 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()); ) ) )

Keluaran

 ArithmeticException => / dengan nol

Dalam contoh, kami mencoba membagi angka dengan 0. Di sini, kode ini menghasilkan pengecualian.

Untuk menangani pengecualian, kami telah meletakkan kode, 5 / 0di dalam tryblok. Sekarang ketika pengecualian terjadi, sisa kode di dalam tryblok akan dilewati.

The catchblok menangkap pengecualian dan pernyataan dalam blok catch dieksekusi.

Jika tidak ada pernyataan di tryblok yang menghasilkan pengecualian, catchblok tersebut dilewati.

2. Java akhirnya memblokir

Di Java, finallyblok selalu dijalankan tidak peduli apakah ada pengecualian atau tidak.

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

Sintaks dasar finallyblok adalah:

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

Jika pengecualian terjadi, finallyblok dijalankan setelah try… catchblok. Jika tidak, itu dijalankan setelah blok percobaan. Untuk setiap tryblok, hanya boleh ada satu finallyblok.

Contoh: Penanganan Pengecualian Java menggunakan blok terakhir

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

Keluaran

 ArithmeticException => / dengan nol Ini adalah blok terakhir

Dalam contoh di atas, kami membagi angka dengan 0 di dalam tryblok. Di sini, kode ini menghasilkan ArithmeticException.

Pengecualian ditangkap oleh catchblok. Dan, kemudian finallypemblokiran dijalankan.

Catatan : Ini adalah praktik yang baik untuk menggunakan finallyblok. Itu karena dapat menyertakan kode pembersihan penting seperti,

  • kode yang mungkin tidak sengaja dilewati oleh pengembalian, lanjutkan, atau putus
  • menutup file atau koneksi

3. Kata kunci melempar dan melempar Jawa

Kata throwkunci Java digunakan untuk secara eksplisit menampilkan satu pengecualian.

Ketika kami throwpengecualian, aliran program bergerak dari satu tryblok ke catchblok lainnya.

Contoh: Penanganan pengecualian menggunakan lemparan 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(); ) )

Keluaran

 Pengecualian di utas "main" java.lang.ArithmeticException: Mencoba membagi dengan 0 di Main.divideByZero (Main.java:5) di Main.main (Main.java:9)

Dalam contoh di atas, kami secara eksplisit ArithmeticExceptionmenggunakan throwkata kunci.

Demikian pula, throwskata kunci digunakan untuk mendeklarasikan jenis pengecualian yang mungkin terjadi di dalam metode. Ini digunakan dalam deklarasi metode.

Contoh: Java melempar 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); ) ) )

Keluaran

 java.io.FileNotFoundException: test.txt (Sistem tidak dapat menemukan file yang ditentukan)

Saat kita menjalankan program ini, jika file test.txt tidak ada, FileInputStreammelempar a FileNotFoundExceptionyang memperluas IOExceptionkelas.

The findFile()metode menentukan bahwa IOExceptiondapat dibuang. The main()pemanggilan metode metode ini dan menangani pengecualian jika dibuang.

Jika metode tidak menangani pengecualian, jenis pengecualian yang mungkin terjadi di dalamnya harus ditentukan dalam throwsklausul.

Untuk mempelajari lebih lanjut, kunjungi lempar dan lempar Java.

Artikel yang menarik...