
Seperti yang terlihat
disamping, hirarki class exception dimulai dari class Object, kemudian ada class Throwable yang merupakan superclass dari
semua jenis exception.
Ada 2 class
turunan langsung dari superclass ini, yaitu Error dan Exception. Sedangkan untuk class
Exception memiliki suatu turunan, yaitu Runtime Exception. Untuk lebih memahami, mari didiskusikan mengenai ketiga turunan dari class
Error dan Exception tersebut, dimulai dari point yang pertama, yaitu:
Error
Error
biasanya tidak disebabkan oleh kesalahan yang terjadi dalam aplikasi. Melainkan
lebih karena keadaan JVM yang tidak normal, seperti kehabisan memory dan lain
sebagainya. Error tidak perlu dihandle dengan try-catch, karena tidak ada cara
untuk mengatasi keadaan error. Secara teknis, sebenarnya error bukanlah
exception, karena bukan merupakan turunan dari class Exception.
Exception
Berbeda dengan error
diatas, exception merepresentasikan keaslahan yang terjadi dalam aplikasi. Programmer
dapat melakukan recovery untuk mengenal exception. JDK mempunyai banyak sekali
class turunan dari exception, nama class-class ini sangat descritive sehingga
hanya dengan melihat nama class exceptionya, sudah diketahui kesalahan apa yang
terjadi dalam aplikasi.
RuntimeException
Terakhir, runtimeException merupakan
class yang spesial karena disebut juga dengan uncheked exception.
Dalam arti RuntimeException tidak wajib di catch. Class ini memiliki turunan,
seperti NullPointerException, ClassCastException, IndexOutOfBoundException dan
masih banyak lagi. Untuk lebih memahami, mari diimplementasikan ke dalam kode
program, seperti berikut ini
package
com.wordpress.bmadi.moreexception;
public
class DemoRuntimeException{
public
static void main(String[] args){
int
i = Integer.parseInt("Andi");
System.out.println("kode
setelah exception");
}
}
|
Kode program diatas artinya :
Mendeklarasikan class DemoRuntimeException yang mengimplementasi exception
NumberFormatException. Bila kode program daitas dieksekusi, keluaran yang
dihasilkan seperti berikut
Exception in
thread "main" java.lang.NumberFormatException: For input string:
"Andi"
at
java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at
java.lang.Integer.parseInt(Integer.java:580)
at
java.lang.Integer.parseInt(Integer.java:615)
at
DemoRuntimeException.main(DemoRuntimeException.java:14)
Karena kode program diatas berusaha mengubah string menjdi angka, maka
akan mengalami RuntimeException. Karena RuntimeException tidak wajib adanya
try-catch yang menghandle, maka bila terjadi exception kode program akan segera
keluar dari method.
Dan, karena disini
hanya terdapat method main saja, maka konsep call stack akan digunakan, dimana untuk string
“kode setelah exception” tidak akan ditampilkan.
Bila belum merasa yakin apakah string berhasil atau tidak dirubah
menjadi Integer, maka dapat diletakan try-catach untuk dapat mengetahui
hasilnya, seperti kode prgoram berikut ini
package
com.wordpress.bmadi.moreexception;
public
class DemoRuntimeException1 {
public
static void main(String[] args){
int i = 0;
try{
i = Integer.parseInt("Andi");
}catch(NumberFormatException
ex){
ex.printStackTrace();
}
System.out.println("kode setelah exception");
}
}
|
Kode program diatas artinya:
Mendeklarasikan class DemoRuntimeException yang mengimplementasi try-catch
untuk mengecheck apakah berhasil atau tidak Integer dirubah menjdi String.Bila
kode program diatas dieksekusi, keluaran yang dihasilkan seperti beriku
java.lang.NumberFormatException:
For input string: "Andi"
at
java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at
java.lang.Integer.parseInt(Integer.java:580)
at
java.lang.Integer.parseInt(Integer.java:615)
at
DemoRuntimeException2.main(DemoRuntimeException2.java:17)
kode setelah exception
Melihat keluaran yang dihasilkan diatas,
pada waktu mengeksekusi method parseInt, terjadi exception yang menyebabkan
eksekusi akan loncat ke dalam kode block catch, setelah menampilkan stack trace ke console kemudian dilanjutkan
eksekusi untuk mencetak string “kode setelah exception” ke console.
Link : https://bmadi.wordpress.com/2015/01/17/hirarki-class-exception/