Exception
adalah
singkatan dari Exceptional Events, yang berarti kesalahan (errors) yang
terjadi saat runtime, menyebabkan gangguan pada
alur eksekusi program.
Terdapat
beberapa tipe error yang dapat muncul. Sebagai contoh adalah error pembagian 0, mengakses elemen di luar jangkauan
sebuah array,
input yang
tidak benar dan
membuka
file
yang
tidak ada.
3 keywords penting
dalam
penanganan exception
Bahasa pemrograman
Java
memiliki 3 keywords penting
dalam
penanganan exception, yaitu try, catch dan finally. 3 Keyword tersebut digunakan bersama, namun finally bersifat
opsional.
Berikut ini adalah penulisan try-catch secara umum :
try {
<code to be
monitored for exceptions>
} catch (<ExceptionType1> <ObjName>)
{
<handler if
ExceptionType1 occurs>
}
...
} catch (<ExceptionTypeN>
<ObjName>) {
}
Petunjuk Penulisan Program
:
Blok catch dimulai setelah kurung kurawal dari kode try atau catch terkait.
Penulisan kode dalam blok mengikuti identasi
Gunakan
contoh kode tersebut
pada
program
DivByZero
yang telah
dibuat sebelumnya :
class DivByZero {
public static void main(String args[]) {
try {
System.out.println(3/0);
System.out.println(“Cetak.”);
} catch (ArithmeticException exc) {
//Reaksi atas kejadian
System.out.println(exc);
}
System.out.println(“Setelah Exception.”);
}
}
Kesalahan pembagian dengan bilangan 0 adalah salah satu contoh dari
ArithmethicException. Tipe
exception
kemudian mengindikasikan klausa catch
pada class ini. Program tersebut menangani kesalahan
yang
terjadi
dengan
menampilkan
deskripsi dari permasalahan.
Output program saat eksekusi akan terlihat sebagai berikut :
java.lang.ArithmeticException: / by zero
After exception.
Bagian kode yang terdapat pada blok try dapat menyebabkan lebih dari satu
tipe exception. Dalam hal ini, terjadinya bermacam tipe kesalahan dapat ditangani menggunakan
beberapa
blok catch. Perlu dicatat
bahwa
blok
try
dapat hanya menyebabkan sebuah exception pada satu waktu, namun dapat pula menampikan tipe exception yang berbeda di lain waktu.
Berikut adalah contoh kode yang menangani lebih dari satu exception :
class MultipleCatch {
public static void main(String args[]) {
try {
int den = Integer.parseInt(args[0]); //baris 4
System.out.println(3/den); //baris 5
} catch
(ArithmeticException exc) { System.out.println(“Nilai Pembagi 0.”);
} catch
(ArrayIndexOutOfBoundsException exc2) { System.out.println(“Missing
argument.”);
}
System.out.println(“After exception.”);
}
}
Pada contoh ini, baris ke-4 akan menghasilkan kesalahan berupa
ArrayIndexOutOfBoundsException bilamana seorang
user alpa dalam memasukkan argument, sedang baris ke-5 akan menghasilkan kesalahan ArithmethicException
jika pengguna memasukkan nilai 0
sebagai sebuah argument.
Pelajari apakah yang akan terjadi terhadap program bila argumen –
argumen berikut
dimasukkan oleh user :
a) Tidak ada argument
b) 1
c) 0
Penggunaan try
bersarang diperbolehkan dalam pemrograman Java.
class NestedTryDemo {
public static void main(String args[]){
try {
int a = Integer.parseInt(args[0]);
try {
int b = Integer.parseInt(args[1]);
System.out.println(a/b);
} catch
(ArithmeticException e) { System.out.println(“Divide by zero error!");
}
} catch (ArrayIndexOutOfBoundsException) {
System.out.println(“2 parameters are required!");
}
}
}
Pelajari apa yang akan terjadi pada program jika argument – argument berikut dimasukkan :
a) Tidak
ada argumen b) 15
c) 15 3
d) 15 0
Kode berikut menggunakan try bersarang tergabung
dengan penggunaan method.
class NestedTryDemo2 {
static void nestedTry(String args[]) {
try {
int a
= Integer.parseInt(args[0]); int b = Integer.parseInt(args[1]);
System.out.println(a/b);
} catch
(ArithmeticException e) { System.out.println("Divide by zero
error!");
}
}
public static void main(String args[]){
try {
nestedTry(args);
} catch
(ArrayIndexOutOfBoundsException e) { System.out.println("2 parameters are
required!");
}
}
}
Bagaimana output program tersebut jika diimplementasikan terhadap argument –
argument berikut :
a) Tidak ada argumen
b)
15
c) 15 3
d) 15 0










