Penanganan Kesalahan
Ada 2 jenis kesalahan,
[1] kesalahan pada saat kompilasi program, dan
[2] kesalahan ketika program dijalankan.
Kalau kesalahan terjadi saat kompilasi, maka program tidak akan dijalankan. Akan tetapi bila kesalahan terjadi saat program berjalan, maka program akan menjadi error. Oleh karena itu perlu mekanisme penanganan kesalahan. Dalam java penanganan kesalahan menggunakan mekanisme Try-Catch.
Hirarki Exception
Deklarasi
a. Penanganan Tunggal
try { //isi yang memungkinkan error } catch (jenis error){ //dijalankan jika tidak terjadi error }
Contoh :
public class Bilangan { public static void main(String args[]) { try { int a = 5; int b = 0; int c = a / b; System.out.println(c); } catch (Throwable e) { System.out.println("terjadi error"); System.out.println(e.getMessage()); } } }
b. Penanganan Bertingkat
try { } catch (jenis error 1) { //jika jenis error 1 terjadi } catch (jenis error 2) { //jika jenis error 2 terjadi }..... catch (jenis error n) { //jika jenis error n terjadi }
Contoh :
public class Bilangan { public static void main(String args[]) { try { int[] bil=new int[3]; bil[4]=7; int a = 5; int b = 0; int c = a / b; System.out.println(c); } catch (ArithmeticException e) { System.out.println("terjadi error"); System.out.println(e.getMessage()); } catch (IndexOutOfBoundsException e){ System.out.println("error"); System.out.println(e.getMessage()); } } }
c. Melontarkan Exception
Melontarkan Exception berfungsi untuk memberitahukan kepada user ketika terjadi kesalahan, misalnya seperti mahasiswa salah dalam memasukkan nim, maka perlu ada pemberitahuan kesalahan input data.
Pelontaran kesalahan menggunakan keyword throws diikuti dengan kelas exception-nya.
Contoh:
public class Mahasiswa { String nim; public String getNim(){ return nim; } public void setNim(String nim) throws Throwable{ if (nim==null){ throw new Throwable("nim harus diisi"); } this.nim=nim; } public static void main (String args[]){ try { Mahasiswa m1 = new Mahasiswa(); m1.setNim(null); } catch (Throwable e){ System.out.println("terjadi error"); System.out.println(e.getMessage()); } } }
d. Penggunaan Block Finally
Blok Finally merupakan blok yang selalu dijalankan pada proses try catch, terlepas terjadi error pada program ataupun tidak.
Contoh:
public class Mahasiswa {
String nim; public String getNim() { return nim; } public void setNim(String nim) throws Throwable { if (nim == null) { throw new Throwable("nim harus diisi"); } this.nim = nim; } public static void main(String args[]) { try { Mahasiswa m1 = new Mahasiswa(); m1.setNim(null); } catch (Throwable e) { System.out.println("terjadi error"); System.out.println(e.getMessage()); } finally { System.out.println("program tetap jalan, apapun yang terjadi"); } } }
.....