Penanganan Pengecualian di Java

Apa yang dimaksud dengan Pengecualian Java?

Pengecualian di Java adalah peristiwa yang mengganggu pelaksanaan instruksi program dan mengganggu aliran normal eksekusi program. Ini adalah objek yang membungkus informasi kejadian kesalahan yang terjadi dalam suatu metode dan diteruskan ke sistem runtime. Di dalam Java, pengecualian terutama digunakan untuk menunjukkan berbagai jenis kondisi kesalahan.

Ada dua jenis kesalahan:

  1. Kesalahan waktu kompilasi
  2. Kesalahan waktu proses

Kesalahan waktu kompilasi dapat diklasifikasikan lagi menjadi dua jenis:

  • Kesalahan Sintaks
  • Kesalahan semantik

Contoh Kesalahan Sintaks:

Bukannya menyatakan int a; Anda salah menyatakannya sebagai in a; yang kompilernya akan menimbulkan kesalahan.

Contoh: Anda telah mendeklarasikan suatu variabel int a; dan setelah beberapa baris kode Anda kembali mendeklarasikan bilangan bulat sebagai int a;Semua kesalahan ini disorot saat Anda mengkompilasi kode.

Contoh Kesalahan Runtime

Kesalahan Runtime disebut Pengecualian error. Ini adalah setiap kejadian yang mengganggu aliran normal eksekusi program. Contoh pengecualiannya adalah, pengecualian aritmatika, pengecualian Nullpointer, pengecualian pembagian dengan nol, dll. Pengecualian dalam Java adalah sesuatu yang di luar kendali pengembang.

Klik di sini jika video tidak dapat diakses

Mengapa kita membutuhkan Pengecualian?

Misalkan Anda telah mengkodekan suatu program untuk mengakses server. Semuanya berfungsi dengan baik saat Anda mengembangkan kode.

Java Penanganan Exception

Selama proses produksi sebenarnya, server sedang down. Saat program Anda mencoba mengaksesnya, pengecualian muncul.

Java Penanganan Exception

Cara Menangani Pengecualian

Sejauh ini kita telah melihat, pengecualian berada di luar kendali pengembang. Namun menyalahkan kegagalan kode Anda pada masalah lingkungan bukanlah solusi. Anda memerlukan Pemrograman yang Kuat, yang menangani situasi luar biasa. Kode seperti ini dikenal sebagai Penangan Pengecualian.

Dalam contoh kita, penanganan pengecualian yang baik adalah, ketika server sedang down, sambungkan ke server cadangan.

Java Penanganan Exception

Untuk menerapkan ini, masukkan kode Anda untuk terhubung ke server (Menggunakan kondisi if dan else tradisional). Anda akan memeriksa apakah server sedang down. Jika ya, tulis kode untuk terhubung ke server cadangan. Pengorganisasian kode seperti itu, menggunakan loop “if” dan “else” tidak efektif ketika kode Anda memiliki beberapa pengecualian java untuk menangani.

class connect{
	if(Server Up){
	 // code to connect to server
	}
	else{
	 // code to connect to BACKUP server
	}
}

Coba Tangkap Blok

Java memberikan penanganan luar biasa bawaan.

  1. Kode normal masuk ke a TRY blok.
  2. Kode penanganan pengecualian masuk ke dalam MENANGKAP blok

Coba Tangkap Blok

Dalam contoh kita, blok TRY akan berisi kode untuk terhubung ke server. Blok CATCH akan berisi kode untuk terhubung ke server cadangan. Jika server aktif, kode dalam blok CATCH akan diabaikan. Jika server tidak aktif, pengecualian akan dimunculkan, dan kode dalam blok catch akan dieksekusi.

Coba Tangkap Blok

Jadi, beginilah cara penanganan pengecualian Java.

Sintaks untuk menggunakan coba & tangkap

try{
    statement(s)
}
catch (exceptiontype name){
	statement(s)
}

Example

Langkah 1) Salin kode berikut ke editor

class JavaException {
   public static void main(String args[]){
      int d = 0;
      int n = 20;
      int fraction = n/d;
     System.out.println("End Of Main");
   }
}

Langkah 2) Simpan file & kompilasi kodenya. Jalankan program menggunakan perintah, java JavaPengecualian

Langkah 3) Pengecualian Aritmatika – bagi dengan nol ditunjukkan seperti di bawah ini untuk baris #5 dan baris #6 tidak pernah dieksekusi

Langkah 4) Sekarang mari kita lihat bagaimana try and catch akan membantu kita menangani pengecualian ini. Kami akan menempatkan pengecualian yang menyebabkan baris kode menjadi a mencoba blok, diikuti oleh a menangkap blok. Salin kode berikut ke editor.

class JavaException {
 public static void main(String args[]) {
  int d = 0;
  int n = 20;
  try {
   int fraction = n / d;
   System.out.println("This line will not be Executed");
  } catch (ArithmeticException e) {
   System.out.println("In the catch Block due to Exception = " + e);
  }
  System.out.println("End Of Main");
 }
}

Langkah 5) Simpan, Kompilasi & Jalankan kode. Anda akan mendapatkan output berikut

Coba Tangkap Blok

Seperti yang Anda amati, pengecualian ditangani, dan baris kode terakhir juga dijalankan. Perhatikan juga bahwa Baris #7 tidak akan dieksekusi karena segera setelah pengecualian dimunculkan, aliran kontrol melompat ke blok tangkapan.

Catatan: Objek AritmeticException “e” membawa informasi tentang pengecualian yang telah terjadi yang dapat berguna dalam melakukan tindakan pemulihan.

Java Hierarki kelas pengecualian

Setelah satu pernyataan catch dijalankan, pernyataan lainnya dilewati, dan eksekusi dilanjutkan setelah blok try/catch. Blok tangkapan yang disarangkan mengikuti hierarki Pengecualian.


Java Hierarki Pengecualian

  • Semua kelas pengecualian di Java memperluas kelas 'Dapat Dilempar'. Throwable memiliki dua subkelas, Error dan Exception
  • Kelas Error mendefinisikan pengecualian atau masalah yang tidak diharapkan terjadi dalam keadaan normal oleh program kita, contohnya Kesalahan memori, Kesalahan perangkat keras, Kesalahan JVM, dll.
  • Kelas Exception mewakili pengecualian yang dapat ditangani oleh program kita, dan program kita dapat dipulihkan dari pengecualian ini menggunakan blok coba dan tangkap
  • Pengecualian Runtime adalah subkelas dari kelas pengecualian. Pengecualian jenis ini mewakili pengecualian yang terjadi pada waktu proses dan tidak dapat dilacak pada waktu kompilasi. Contoh yang sangat baik adalah pengecualian pembagian nol, atau pengecualian penunjuk nol, dll.
  • Pengecualian IO dihasilkan selama operasi input dan output
  • Pengecualian terputus di Java, dihasilkan selama beberapa threading.

Contoh: Untuk memahami penyatuan blok coba dan tangkap

Langkah 1) Salin kode berikut ke editor.

class JavaException {
 public static void main(String args[]) {
  try {
   int d = 1;
   int n = 20;
   int fraction = n / d;
   int g[] = {
    1
   };
   g[20] = 100;
  }
  /*catch(Exception e){
  	System.out.println("In the catch block due to Exception = "+e);
  }*/
  catch (ArithmeticException e) {
   System.out.println("In the catch block due to Exception = " + e);
  } catch (ArrayIndexOutOfBoundsException e) {
   System.out.println("In the catch block due to Exception = " + e);
  }
  System.out.println("End Of Main");
 }
}

Langkah 2) Simpan file & kompilasi kodenya. Jalankan programnya dengan menggunakan perintah, Jawa JavaPengecualian.

Langkah 3) ArrayIndexOutOfBoundsException dihasilkan. Ubah nilai int d menjadi 0. Simpan, Kompilasi & Jalankan kodenya.

Langkah 4) ArithmeticException harus dibuat.

Langkah 5) Batalkan komentar pada baris #10 ke baris #12. Simpan, Kompilasi & Jalankan kode.

Langkah 6) Kesalahan Kompilasi? Hal ini karena Exception adalah kelas dasar dari ArithmeticException Exception. Setiap Exception yang dimunculkan oleh ArithmeticException dapat ditangani oleh kelas Exception juga. Jadi blok tangkapan ArithmeticException tidak akan pernah mendapat kesempatan untuk dieksekusi sehingga membuatnya mubazir. Oleh karena itu kesalahan kompilasi.

Java Akhirnya Blokir

Blok terakhir adalah dieksekusi terlepas dari pengecualian yang diajukan di blok coba. Dia opsional untuk digunakan dengan blok coba.

 try {
  statement(s)
 } catch (ExceptiontType name) {

  statement(s)

 } finally {

  statement(s)

 }

Jika pengecualian dimunculkan di blok try, blok akhirnya dieksekusi setelah blok catch dieksekusi.

Example

Langkah 1) Salin kode berikut ke editor.

class JavaException {
   public static void main(String args[]){
    try{
       int d = 0;
       int n =20;
       int fraction = n/d;
    }
  catch(ArithmeticException e){
    System.out.println("In the catch block due to Exception = "+e);
  }
  finally{
	System.out.println("Inside the finally block");
  }
}
}

Langkah 2) Simpan, Kompilasi & Jalankan Kode.

Langkah 3) Keluaran yang diharapkan. Akhirnya blok dieksekusi meskipun pengecualian dimunculkan.

Langkah 4) Ubah nilai variabel d = 1. Simpan, Kompilasi dan Jalankan kode dan amati hasilnya. Bagian Bawah Formulir

Ringkasan

  • An Pengecualian adalah kesalahan run-time yang mengganggu aliran normal eksekusi program. Gangguan selama eksekusi program disebut sebagai kesalahan atau pengecualian.
  • Kesalahan diklasifikasikan menjadi dua kategori
    • Kesalahan waktu kompilasi – Kesalahan sintaksis, kesalahan semantik
    • Kesalahan runtime- Pengecualian
  • A program yang kuat harus menangani semua pengecualian dan lanjutkan dengan aliran normal eksekusi program. Java menyediakan metode penanganan yang luar biasa bawaan
  • Exception Handler adalah sekumpulan kode yang menangani pengecualian. Pengecualian dapat ditangani di Java menggunakan coba & tangkap.
  • Coba blokir: Kode normal ada di blok ini.
  • Tangkap blok: Jika ada kesalahan pada kode normal, maka akan masuk ke blok ini