Minggu, 19 Oktober 2014

Exception Handling Pada Java

Error dalam pemrograman dibagi dalam tiga katagori yaitu syntax error (saat kompilasi), run time error, dan logic error (output belum sesuai dengan yang diharapkan).

Exception dipicu oleh run time error dan digunakan sebagai sarana melaporkan kondisi-kondisi kesalahan.
1.2. Jenis-Jenis Exception
Dalam java, exception merupakan objek dari subkelas yang diturunkan dari kelas Throwable. KelasThrowable ini terdapat dalam package java.lang.object.

1.2.1. Kelompok Kelas Error
Error ini bersifat fatal sehingga sistem tidak dapat dimanipulasi untuk diperbaiki, contoh kelas:LinkageErrorVirtualMachineError, dan AWTError.
1.2.2. Kelompok Kelas Exception
Jenis error ini masih dapat diantisipasi dengan menyisipkan statement tambahan untuk mendeteksi data yang berpotensi menimbulkan error.
Ada kelompok exception yang diperiksa oleh interpreter, apakah akan ditangani atau dilempar, namun ada pula exception yang akan tidak diperiksa interpreter.
Disamping itu programmer dibolehkan membuat exception sendiri dengan cara extends atauimplements kelas Exception.
Checked Exception
No
Exception
Deskripsi
1
ClassNotFoundExceptionKelas tidak ditemukan
2
CloneNotSupportedExceptionmelakukan clone objek yang tidak mengimplementasikan interfaceCloneable
3
IllegalAccessExceptionPengaksesan ke kelas ditolak
4
InstantiationExceptionMenciptakan objek dari kelas abtract ataupun dari interface
5
InterruptedExceptionThread telah diinterupsi oleh thread lain
6
NoSuchFieldExceptionField yang diminta tidak ada
7
NoSuchMethodExceptionMethod yang diminta tidak ada
Uncheked Exception
No
Exception
Deskripsi
1AritmaticExceptionKesalahan Aritmatik seperti pembagian dengan nol
2ArrayIndexOutBoundsExceptionIndex array di luar batas
3ArrayStoreExceptionPemberian nilai ke elemen array tidak sesuai dengan tipenya
4ClassCastExceptionCast yang tidak sah
5IllegalArgumentExceptionArgument illegal
6IllegalMonitorStateExceptionOperasi monitor illegal seperti menunggu di thread yang tidak terkunci
7IllegalStateExceptionLingkungan atau aplikasi state yang tidak benar
8IllegalThreadStateExceptionOperasi yang diminta tidak kompatibel dengan state thread saat itu
9IndexOutOfBoundExceptionIndeks di luar batas
10NegativeArraySizeExceptionArray diciptakan dengan ukuran negatif
11NullPointerExceptionPenggunan null yang tidak sah
12NumberFormatExceptionKonversi yang tidak sah dari string ke format numerik
13SecurityExceptionMelanggar
aturan security
14StringIndexOutOfBoundsIndex di luar batas string
15UnsupportedOperationExceptionDitemukan operasi yang tidak didukung
Dua Exception yang belum dikelompokkan, yaitu IOException dan AWTException.
1.3. Mengantisipasi Exception
Diperlukan tiga langkah berikut ini untuk mengantisipasi exception :
  1. Mendeklarasikan Exception
Bentuk umum :
[modifier] returntype namaMethod() throws tipeException{
}
Contoh :
public void operasiMatematika() throws IOException,
    ClassNotFoundException {
}
public void beriPinjaman() throws TolakException{
}
  1. Melempar Exception
Bentuk umum :
TipeException namaObjek = new TipeException;
throw namaObjek;
Diringkas menjadi :
throw namaObjek TipeException;
atau
throw new TipeException();
Contoh :
TolakException t = new TolakException(”lagi pelit”);
throw t;
Diringkas menjadi :
throw new TolakException(”lagi pelit!”);

  1. Menangkap Exception
Penangkapan runtime error, dapat mempunyai beberapa blok yang menangkap setiap jenis exception.
Bentuk umum :
try {
// pemanggilan method yg mungkin menghasilkan exception
// blok statement yg mungkin menghasilkan exception
}
catch(TipeException1 namaObjek) {
// penanganan salah-satu jenis exception
}
catch(TipeException2 namaObjek) {
// penanganan salah-satu jenis exception
} 
catch(TipeExceptionN namaObjek) {
// penanganan salah-satu jenis exception
}
finally {
// blok yang harus dieksekusi
}
Jika pada blok try tidak terjadi exception, maka blok catch tidak ada yang dieksekusi dan segera blokfinally yang dieksekusi.
Jika terjadi exception pada blok try, maka salah satu blok catch dieksekusi, kemudian blok finallydieksekusi. 
1.4. Mekanisme Mengantisipasi Exception
Ada tiga kemungkinan skenario exception, pertama jika tidak terjadi exception (tidak ada blok catch yang dieksekusi), kedua jika exception terjadi pada blok method tunggal (salah-satu blok catch dieksekusi), ketiga jika terjadi exception pada blok tersarang.
Method A {
    …
    try {
        …
        memanggil method B;
    }
    catch(Exception1 obj1) {
        proses Obj1;
    }
    …
}
Method B {
    …
    try {
        …;
    }
    catch(Exception2 obj2) {
        proses Obj2;
    }
    …
}
1.5. Menampilkan Pesan Exception
Beberapa method standard yang dapat digunakan untuk menampilkan pesan exception merupakan anggota dari kelas java.lang.Throwable.
No
Method Pesan Exception
Deskripsi
1
getMessage()Mengembalikan nilai string yang berisi pesanrinci tentang objek Throwable yang mengalami exception
2
toString()Mengembalikan nilai string yang berisi pesansingkat tentang objek yang mengalami exception
3
getLocalizedMessage()Menampilkan pesan exception lokal (yang terjadi pada subkelas saja)
4
printStackTrace()Method ini bersifat void, dan hanya mencetak informasi tentang objek Throwable