Contoh program exception handling di bawah ini akan menjelaskan mengenai mendeklarasikan, melemparkan dan menangkap exception pada program Java. Instance method yaitu setPanjang(), setLebar() dan setTinggi() dapat melemparkan (throw) exception ketika nilai yang dimasukkan berupa angka negatif.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
public class BalokDenganException { private double panjang, lebar, tinggi; private static int jumlahObjek = 0; public BalokDenganException(double panjang, double lebar, double tinggi){ setPanjang(panjang); setLebar(lebar); setTinggi(tinggi); jumlahObjek++; } public static int getJumlahObjek() { return jumlahObjek; } //set dan get method untuk panjang balok public double getPanjang() { return panjang; } public void setPanjang(double panjang) throws IllegalArgumentException { if (panjang >= 0) this.panjang = panjang; else throw new IllegalArgumentException ("Nilai panjang dari persegi panjang tidak boleh negatif"); } //set dan get method untuk lebar balok public double getLebar() { return lebar; } public void setLebar(double lebar) throws IllegalArgumentException { if (lebar >= 0) this.lebar = lebar; else throw new IllegalArgumentException ("Nilai lebar dari persegi panjang tidak boleh negatif"); } //set dan get method untuk lebar balok public double getTinggi() { return tinggi; } public void setTinggi(double tinggi) { if (tinggi >= 0) this.tinggi = tinggi; else throw new IllegalArgumentException ("Nilai tinggi dari persegi panjang tidak boleh negatif"); } } |

Pada class BalokDenganException di atas, method setPanjang(), setLebar() dan setTinggi() akan melemparkan exception bila nilai yang dimasukkan adalah negatif. Method-method tersebut mendeklarasikan IllegalArgumentException pada method headernya.
Meskipun tanpa menggunakan klausa throws IllegalArgumentException pada deklarasi method, class BalokDenganException akan tetap sukses di compile. Ini dikarenakan exception tersebut merupakan subclass dari RuntimeException (unchecked exception) terlepas dari apakah exception tersebut dideklarasikan pada method header.
Kemudian untuk mengujinya bisa menggunakan class TestBalokDenganException seperti di bawah ini:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
public class TestBalokDenganException { public static void main(String[] args) { try{ BalokDenganException balok1 = new BalokDenganException(8.7, 2.8, 1.7); BalokDenganException balok2 = new BalokDenganException(5.2, 3.6, 1.5); BalokDenganException balok3 = new BalokDenganException(3.9, 2.7, 1.7); BalokDenganException balok4 = new BalokDenganException(9.8, 6.7, 3.4); BalokDenganException balok5 = new BalokDenganException(-5.6, 3.9, 1.6); } catch(IllegalArgumentException ex){ System.out.println(ex); } System.out.println("Jumlah objek yang dibuat: " + BalokDenganException.getJumlahObjek()); } } |
Output:
1 2 |
java.lang.IllegalArgumentException: Nilai panjang dari persegi panjang tidak boleh negatif Jumlah objek yang dibuat: 4 |
Class TestBalokDenganException membuat 5 objek untuk menguji cara kerja penanganan exception. Perhatikan pada objek balok5 pada blok try, nilai panjang yang ditetapkan adalah negatif sehingga akan melemparkan IllegalArgumentException pada method setPanjang().
Kemudian exception yang terlempar itu akan ditangkap pada blok catch. Tipe objek ex adalah IllegalArgumentException, dan ini sesuai dengan objek exception yang dilemparkan oleh method setPanjang(), sehingga exception ini akan ditangkap oleh blok catch.
Kemudian exception handler akan menampilkan pesan singkat dengan ex.toString() mengenai exception tersebut, atau anda juga bisa mencoba dengan ex.printStackTrace() untuk mendapatkan detail yang lebih mengenai exception ini.
Ketika exception terjadi maka program akan tetap dilanjutkan. Jika exception handler tidak menangkap exception tersebut maka program akan dihentikan secara mendadak.
Bila method melemparkan Error exception selain dari RuntimeException maka method harus dipanggil di dalam blok try-catch.
Contoh Kasus Program Exception Handling Pada Penjumlahan Integer
Contoh lainnya di bawah ini adalah mengenai penjumlahan integer. Dimana ketika user memasukkan nilai selain integer maka exception akan terlempar dan ditangkap oleh blok catch sebagai handler.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
import java.util.Scanner; public class TestInteger { public static void main(String[] args) { Scanner input = new Scanner(System.in); boolean lanjutkanInput = true; do{ try{ System.out.print("Masukkan nilai integer pertama: "); int angkaPertama = input.nextInt(); System.out.println("Nilai integer pertama adalah: " + angkaPertama); System.out.print("Masukkan nilai integer kedua: "); int angkaKedua = input.nextInt(); lanjutkanInput = false; System.out.println("Nilai integer kedua adalah: " + angkaKedua); System.out.println("Jumlah nilai integer adalah: " + (angkaPertama + angkaKedua)); } catch (Exception ex){ System.out.println("Silakan coba lagi. (" + "Input yang dimasukkan tidak sesuai: " + "nilai harus berupa integer!)"); input.nextLine(); //Akan membuang input saat ini sehingga user dapat memasukkan input yang baru } }while(lanjutkanInput); } } |
Contoh output:
1 2 3 4 5 6 7 8 9 |
Masukkan nilai integer pertama: 24 Nilai integer pertama adalah: 24 Masukkan nilai integer kedua: 0.25 Silakan coba lagi. (Input yang dimasukkan tidak sesuai: nilai harus berupa integer!) Masukkan nilai integer pertama: 35 Nilai integer pertama adalah: 35 Masukkan nilai integer kedua: -25 Nilai integer kedua adalah: -25 Jumlah nilai integer adalah: 10 |
Demikianlah contoh program exception handling pada Java mengenai mendeklarasikan, melemparkan, dan menangkap exception yang mudah-mudahan bisa membantu anda untuk memahami topik ini dengan lebih baik.
Leave a Reply