MODUL 9 EXCEPTION HANDLING TUJUAN Setelah menyelesaikan modul ini, praktikan dapat: Memahami konsep Exception Handling. Praktikan dapat mengimplementasikan Exception Handling dalam bahasa Java.
DASAR TEORI Eksepsi (Exception) adalah kondisi abnormal yang mungkin terjadi selama eksekusi program dimana program berakhir secara tidak normal. Kondisi ini harus ditangani sehingga eksekusi tetap bisa berakhir secara normal. Dalam java, eksepsi direpresentasikan sebagai sebuah objek (everything is object). Exception class digunakan untuk menangani exception yang terjadi dalam program. Exception class ini terdapat dalam package java.lang. Ada lima keyword dalam penanganan eksepsi yaitu: try, catch, finally, throw dan throws. Bentuk penggunaannya secara umum adalah: try { // kode yang mungkin mengakibatkan eksepsi } catch(TipeEksepsi1 objekEksepsi){ //kode untuk menangani eksepsi yang cocok dengan //TipeEksepsi1 } catch(TipeEksepsiN objekEksepsi){ //kode untuk menangani eksepsi yang cocok dengan //TipeEksepsiN } finally { //kode yang pasti dieksekusi setelah eksekusi blok try-catch //diatas }
Secara logika, blok try-catch-finally bekerja sebagai berikut yaitu baris-baris perintah yang memiliki kemungkinan terjadi error pada saat runtime diletakan pada blok try. Apabila pada saat eksekusi terjadi error, maka yang berikutnya dieksekusi adalah blok catch yang telah disiapkan untuk menangani berbagai macam eksepsi yang 1
Praktikum Pemrograman Berorientasi Objek | Modul 9
mungkin terjadi. Sedangkan blok finally merupakan bagian dari program yang pasti akan
dieksekusi.
Beberapa
macam
eksepsi
yang
sering
terjadi
adalah
ArrayIndexOutOfBoundException, ArithmeticException serta NullPointerException.
User Defined Exception Eksepsi yang dibuat sendiri (User defined exception) digunakan untuk menangani exception khusus yang tidak disediakan oleh java dengan cara membuat kelas exception baru yang merupakan turunan dari kelas Exception. Throw dan throws merupakan kata kunci yang digunakan dalam mendefiniskan eksepsi kelas buatan sendiri. Kerangka penggunaan throw-throws yaitu : class EksepsiSendiri extends Exception { public String getMessage() { return "Pesan Kesalahan"; } } class YangDigunakan { void metode() throws EksepsiSendiri { //isi method //kondisi eksepsi throw new EksepsiSendiri(); //isi method } }
2
Praktikum Pemrograman Berorientasi Objek | Modul 9
DEMO PROGRAM DemoEksepsi1.java package demoeksepsi1; public class DemoEksepsi1 { public static void main(String[] args) { int[] arr={10,11}; int x=2; System.out.println("Nama / No.Mhs\n"); try { System.out.println("Bagian Try"); for (int i=0;i<=x;i++) { System.out.print("Elemen Array index ke"+i+" :"); System.out.println(arr[i]); } } catch(ArrayIndexOutOfBoundsException e) { System.out.println("\nBagian Catch"); System.out.println("Indeks array diluar cakupan"); } finally { System.out.println("Bagian finally -> pasti dieksekusi"); } } }
DemoEksepsi2.java package demoeksepsi2; public class DemoEksepsi2 { static private int[] arr; static private int x; DemoEksepsi2(int[] Arr,int X) { arr=Arr; x=X; } public static void proses() 3
Praktikum Pemrograman Berorientasi Objek | Modul 9
{ try { System.out.println("Bagian Try"); int arrInt; for (int i=arr.length-1;i>=0;i--) { System.out.print("Elemen Array index ke-"+i+" :"); System.out.println(arr[i-2]); arrInt=arr[i]; System.out.print("Hasil Perhitungan : "); System.out.println(arrInt/(x-i)); } } catch(ArrayIndexOutOfBoundsException e) { System.out.println("\nBagian Catch"); System.out.println("Indeks array diluar cakupan"); } catch(ArithmeticException e) { System.out.println("\nBagian Catch"); System.out.println("Pembagian Dengan Nol"); } finally { System.out.println("Bagian finally -> pasti dieksekusi"); } } public static void main(String[] args) { System.out.println("Nama / No.Mhs\n"); int [] arrObj={1,2,3,4}; DemoEksepsi2 Obj1 = new DemoEksepsi2(arrObj,7); System.out.println("Objek 1"); Obj1.proses(); DemoEksepsi2 Obj2 = new DemoEksepsi2(arrObj,3); System.out.println("Objek 2"); Obj2.proses(); } }
4
Praktikum Pemrograman Berorientasi Objek | Modul 9
ThrowExample.java package throwbyexample; class IllegalValueException extends Exception { public String getMessage() { return "Error in the values supplied to the function"; } } class UserTrial { int val1, val2; public UserTrial(int a, int b) { val1 = a; val2 = b; } void show() throws IllegalValueException { if ((val1 < 0)||(val2 > 0)) throw new IllegalValueException(); System.out.println ("Value 1 = " + val1); System.out.println ("Value 2 = " + val2); } } public class ThrowExample { public static void main (String args[]) { System.out.println("Nama / No.Mhs\n"); UserTrial values = new UserTrial(-1, 1); try { values.show(); } catch (IllegalValueException e) { System.out.println (e.getMessage()); } } }
5
Praktikum Pemrograman Berorientasi Objek | Modul 9