Exception adalah sebuah objek yang terjadi oleh kondisi yang tidak biasa, terutama ketika terjadi error conditions, run-time error atau invalid processing. Exception menyediakan pemberitahuan kesalahan dan cara penanganannya. Dengan cara ini penanganan kesalahan dapat dilakukan secara tepat.
Exception ini merupakan fitur yang disediakan oleh Java agar program bersifat robust,yaitu tidak membatasi adanya kemungkinan adanya kesalahan input yang tidak diharapkan yang dilakukan oleh user.
Java menangani exception dengan menggunakan 5 kata kunci, yaitu: try, catch, throw,throws, dan finally.
Secara singkat, untuk memonitor bagaimana cara kerjanya exception, program yang akan dimonitor diisi dengan sebuah try block. Jika exception terjadi didalam try block, itu akan ditambahkan ‘thrown’. Kode program dapat menangkap exception ini (menggunakan catch) dan menanganinya dengan cara rasional.
Bentuk umum dari exception-handling block:
try
{
// kode blok
}
catch (Tipe Exception e )
{
// penanganan exception untuk tipe
}
Finally
{
// kode blok yang dieksekusi sebelum try block berakhir
}
|
3.1 Tipe Exception
Semua tipe exception adalah subclasses dari built-in class Throwable. Dengan demikian,Throwable adalah sebagai top exception dalam hirarakhi kelas. Di bawah Throwable ada dua subclasses yang dibagi menjadi 2 bagian yaitu exception dan error.
Exception, Kelas ini digunakan untuk menangani kondisi luar biasa yang program sebaiknya tangkap. Subclass penting dari Exception, adalah RuntimeException.
Exception tipe ini secara otomatis didefinisikan untuk program yang kita tulis, dan termasuk division by zero dan invalid array indexing.
Error, mendefinisikan exception yang tidak diharapkan untuk di tangkap dibawah keadaan normal oleh program kita. Exception dari tipe Error digunakan oleh Java run-time system untuk menunjukan error yang berhubungan dengan run-time environment itu sendiri. Sebagai contoh, stack overflow adalah sebuah contoh dari error yang terjadi seperti yang baru dijelaskan. Dan pada bab ini kita hanya membahas pada Exception.
3.2 Menggunakan try dan catch
Berikut ini sebuah contoh program yang mengilustrasikan blok try dan blok catch dimana proses ArithmeticException dihasilkan oleh kesalahan pembagian dengan nol :
try
{
// kode blok
}
catch (Tipe Exception1 e )
{
// penanganan exception untuk tipe 1
}
|
3.3 Multiple catch Blocks
Java mendukung multiple catch blocks, yaitu dalam satu blok try dapat mempunyai lebih dari satu blok catch. Jika dalam satu blok try terdapat lebih dari satu blok catch, hanya satu blok catch yang dieksekusi sesuai dengan kondisi kesalahan.
Setiap blok catch harus ditentukan sebuah tipe exception yang berbeda. Bentuk umumnya adalah sebagai berikut:
try
{
// kode blok
}
catch (Tipe Exception1 e )
{
// penanganan exception untuk tipe 1
}
catch (Tipe Exception2 e )
{
// penanganan exception untuk tipe 2
}
|
3.4 Finally
Finally adalah bersifat optional. bagaimanapun, setiap statemen try memerlukan minimal satu catch atau satu finally.
3.5 Exceptions Build-in Dalam Java
Paket standar java.lang mendefinisikan beberapa kelas exception. Beberapa dari kelas tersebut telah digunakan dalam contoh di atas. Berikut ini diberikan sebuah Table yang berisi beberapa jenis tipe exception pada java.lang.
Tabel 5.1 Tipe exception pada java.lang
Tipe Exception
|
Deskripsi
|
ArithmeticException
|
Kesalahan aritmetika, seperti pembagian dengan nol.
|
ArrayIndexOutOfBoundsException
|
Indeks array keluar dari batas.
|
ArrayStoreException
|
Menunjuk ke sebuah elemen array yang tipenya tidak kompatibel.
|
IllegalArgumentException
|
Argument tidak sah digunakan untuk memanggil sebuah argument.
|
IndexOutOfBoundsException
|
Beberapa tipe indeks keluar dari batas
|
NegativeArraySizeException
|
Array dibuat dengan ukuran negative
|
NullPointerException
|
Invalid use of a null reference.
|
NumberFormatException
|
Konversi tidak sah dari string ke sebuah format numeric.
|
ClassNotFoundException
|
Class tidak ditemukan.
|
CloneNotSupportedException
|
Berusaha untuk mengklonig sebuah objek yang tidak menerapkan Cloneable interface.
|
IllegalAccessException
|
Akses ke sebuah class tidak sah
|
InstantiationException
|
Usaha untuk membuat sebuah objek dari abstract class atau interface.
|