Belajar Pemrograman Java Dari Dasar

Memahami Exceptions Berantai Pada Program Java

Sebelumnya anda sudah mengetahui bahwa blok catch akan melemparkan kembali exception yang asli (original). Namun terkadang Anda perlu juga untuk melemparkan exception yang baru dengan informasi tambahan bersama dengan exception original. Proses ini disebut dengan exception berantai (chained exception).

Berikut ini adalah contohnya:

public class ExceptionBerantai {
 
 
 public static void methodA() throws Exception{
  try{
   methodB();
  }
  catch (Exception ex){
   throw new Exception("Informasi baru didapatkan dari methodA", ex);
  }
 }
 
 public static void methodB() throws Exception {
  throw new Exception("Informasi baru didapatkan dari methodB");
 }
 
 public static void main(String[] args) {
  
  try{
   methodA();
  }
  catch (Exception ex){
   ex.printStackTrace();
  }
 }
}

Contoh output:
java.lang.Exception: Informasi baru didapatkan dari methodA
 at ExceptionBerantai.methodA(ExceptionBerantai.java:9)
 at ExceptionBerantai.main(ExceptionBerantai.java:20)
Caused by: java.lang.Exception: Informasi baru didapatkan dari methodB
 at ExceptionBerantai.methodB(ExceptionBerantai.java:14)
 at ExceptionBerantai.methodA(ExceptionBerantai.java:6)
 ... 1 more

Penjelasan dari program diatas adalah sebagai berikut:
  • Method main memanggil methodA pada line 20, kemudian methodA memanggil methodB di line 6.
  • MethodB kemudian melemparkan exception pada line 14. 
  • Exception ini kemudian ditangkap oleh blok catch di methodA kemudian di 'wrap' dalam exception baru di line 9.
  • Exception baru dilemparkan dan ditangkap oleh blok catch pada method main di line 22.
  • Method printStackTrace pada line 23 akan memberikan infomrasi dari exception
  • Exception baru yang dilemparkan dari methodA akan ditampilkan terlebih dahulu kemudian diikuti oleh exception original yang dilemparkan dari methodB.
exception berantai Java

Class Throwable Memiliki Constructor Yang Mendukung Exception Berantai Pada Program Java

Exception berantai ini pertama kali diperkenalkan sejak Java 1.4. Untuk mendukung exception berantai ini maka pada class Throwable terdapat 2 constructor yang mendukungnya, yaitu:
  • Throwable (Throwable cause)
  • Throwable (String msg, Throwable cause)



Method dari Class Throwable Yang Mendukung Exception Berantai 

Method class Throwable untuk exception berantai ini diantaranya adalah:
  • getCause(), method ini akan mengembalikan penyebab aktual dari exception.
  • initCause(Throwable cause), method ini akan meng-set penyebab untuk memanggil exeception.
Contoh dari penggunaan method tersebut sebagai berikut:

public class MenanganiException
{
    public static void main(String[] args)
    {
        try
        {
            //Membuat sebuah exception
            NumberFormatException ex = new NumberFormatException("Exception");   
 
            //Mengset sebuah penyebab aktual dari exceception
            ex.initCause(new NullPointerException("Ini adalah penyebab aktual dari exception"));  
 
            throw ex;
        }
        catch(NumberFormatException ex)
        {
            System.out.println(ex);//menampilkan exception
 
            System.out.println(ex.getCause());//mendapatkan penyebab aktual dari exception
        }
    }
}

Contoh output:
java.lang.NumberFormatException: Exception
java.lang.NullPointerException: Ini adalah penyebab aktual dari exception

Share on Facebook
Share on Twitter
Share on Google+

Tempat berbagi pengetahuan untuk bahasa pemrograman Java

Related : Memahami Exceptions Berantai Pada Program Java