Menangkap Kesalahan (Error Handling)

advertisement
Menangkap Kesalahan
(Error Handling)
Untuk membuat penangkap kesalahan (error handler), Java menyediakan Class Exception.
dengan adanya Exception ini, kesalahan tidak akan menyebabkan program keluar dari tugas,
dan pesan kesalahan yang biasanya muncul, tidak akan dimunculkan, atau dimunculkan
namun dengan modifkasi tertentu.
Contoh :
class TryAndCatch {
public static void main (String untag[]) {
int Angka = 20;
int Hasil ;
Hasil = 20/0;
System.out.println(Hasil);
}
}
Perhatikan gambar diatas, terdapat pesan kesalahan java.lang.arithmaticException : / by zero
Apabila program diatas dimodifikasi menjadi sbb :
class TryAndCatch {
public static void main (String untag[]) {
int Angka = 20;
int Hasil ;
try {
Hasil = 20/0;
System.out.println(Hasil);
} catch(java.lang.ArithmeticException ex) {
System.out.println("Maaf pembaginya adalah nol");
}
}
}
Pesan kesalahan java.lang.arithmaticException : / by zero, diganti menjadi “Maaf
Pembaginya adalah nol”
Contoh 2 :
class TryAndCatch {
public static void main (String untag[]) {
int a[] = {1,2,3};
int Angka = 20;
try {
for(int i=0; i<3;i++) {
System.out.println(a[5]);
}
} catch(java.lang.ArithmeticException ex) {
System.out.println("Maaf pembaginya adalah nol");
} catch(java.lang.ArrayIndexOutOfBoundsException ex) {
System.out.println("Maaf index anda telalu besar");
}
}
}
Hasilnya :
Syntax Try and Catch secara Umum :
try {
statement_berhasil;
} catch ( class_exception variabel_penampung) {
statement_gagal;
}
Atau
try {
statement_berhasil;
} catch ( class_exception1 variabel_penampung1) {
statement_gagal1;
}
……
catch ( class_exceptionN variabel_penampungN) {
statement_gagalN;
}
Atau
try {
statement_berhasil;
} catch ( class_exception1 variabel_penampung1) {
statement_gagal1;
}
……
catch ( class_exceptionN variabel_penampungN) {
statement_gagalN;
}catch(Throwable t) {
statement_throw;
}
statement_berhasil adalah statement yang diharapkan akan dikerjakan selama program
berlangsung
statement_gagal adalah statement pengganti bila statement_berhasil (statement yang ada
pada blok try) gagal dilaksanakan.
class_exception adalah nama class exception penampung kesalahan
catching class_exception bisa terdiri dari satu class, namun bisa juga lebih dari satu class,
sehingga lebih mendetail.
catching class Throwable digunakan apabila exception tidak didaftarkan pada
class_exception1 s/d class_exceptionN. Jika dibandingkan dengan struktur kontrol IF..ELSE
IF….ELSE, maka Throwable adalah blok ELSE nya.
DAFTAR PESAN KESALAHAN PADA JAVA
java.lang.ArithmeticException
Dikerjakan ketika terjadi kesalahan arithmatic cth : pembagian oleh nol atau divide by Zero
java.lang.ArrayIndexOutOfBoundsException
dikerjakan ketika array diindaksikan negatif atau melebihi indeks yang tersedia
java.lang.ArrayStoreException
mengindikasikan usaha yang dibuat untuk menyimpan tipe data dari objek pada array objek
gagal.
Contoh :
Object x[] = new String [3]
x[0] = new Integer(0)
java.lang.ClassCastException
mengindakasikan kode yang digunakan untuk mengCast (mengubah tipe data) objek pada
suatu sub class tapi bukan dari suatu instance
Contoh:
Object x[] = new Integer(0);
System.out.println((String) x);
java.lang.ClassNotFoundException
dikerjakan apabila aplikasi gagal sewaktu mencoba untuk meload class dg cara sbb:
 menggunakan forName dari class Class
 menggunakan findSystem dari class classLoader
 menggunakan loadClass dari class classLoader
java.lang.CloneNotSupportedException
mengindikasikan clone method pada class objek dipanggil untuk mengklone objek, tetapi
class objek tersebut tidak mengimplement clonable interface
java.lang.Exception
berdasar dari form Throwable yang mengindikasikan kondisi aplikasi yang dimungkinkan
untuk di Catch
java.lang.ExceptionInInitializerError
Mengindikasikan terjadinya kesalahan sewaktu menginisialisasi (memberikan nilai awal)
pada variable statis
java.lang.IllegalAccessException
Mengindikasikan terjadinya kesalahan sewaktu menInstancekan suatu class, meng-Set atau
meng-Get suatu Field/Variable , atuapun memanggil suatu prosedur atau kocstruktor, karena
hak akses yang tidak terpenuhi/mencukupi.
java.lang.IllegalArgumentException
Mengindikasikan terjadinya kesalahan sewaktu pembuatan/pemanggilan method (baik
proseur/fungsi) karena adanya argumen/parameter yang tidak tepat (berupa kelebihan atupun
kekurangan parameter, ataupun tipe datanya tidak sama)
java.lang.IllegalMonitorStateException
Mengindikasikan terjadinya kesalahan sewaktu thread berusaha menunggu monitor dari
suatu Objek, padahal thread tersebut tidak mempunyai/memiliki hak monitor tsb.
java.lang.IllegalStateException
Mengindikasikan terjadinya kesalahan sewaktu pemanggilan Method. Artinya Method tsb
dipanggil pada saat yang tidak tepat, atau dengan kata lain Java atau Aplikasi berbasis java
tsb, tidak berada pada saat yang tepat saat pemanggilan method tsb dilakukan.
java.lang.IllegalThreadStateException
Mengindikasikan terjadinya kesalahan sewaktu pemanggilan Thread. Artinya Thread tsb
dipanggil pada saat yang tidak tepat, atau dengan kata lain Java atau Aplikasi berbasis java
tsb. Belum berada pada saat yang tepat saat pemanggilan Thread tsb. dilakukan.
java.lang.IndexOutOfBoundsException
Mengindikasikan terjadinya kesalahan index dari string, array atau vektor yang melebihi dari
seharusnya.
java.lang.InstantiationException
Mengindikasikan terjadinya kesalahan sewaktu aplikasi bersaha mengCreate suatu instance
melalui method newInstance dari class, padahal objek yang akan diCreate berupa interface
ataupun abstract.
java.lang.InterruptedException
Mengindikasikan terjadinya kesalahan sewaktu suatu Thread dalam posisi sleep, waiting
atapun pause untuk beberapa saat, sementara thread lain berusaha meng-Interrupt thread tsb.
java.lang.NegativeArraySizeException
Mengindikasikan terjadinya kesalahan sewaktu aplikasi hendak membuat array dengan
ukuran negatif, seharusnya ukuran array adalah positif.
java.lang.NoSuchMethodException
Mengindikasikan terjadinya kesalahan sewaktu aplikasi hendak memanggil Method (baik
prosedur atapun fngsi) yang tidak ada./ belum dibuat.
java.lang.NoSuchFieldException
Mengindikasikan terjadinya kesalahan sewaktu aplikasi hendak menggunakan suatu field
atau variabel yang tidak ada / belum dibuat
java.lang.NullPointerException
Mengindikasikan terjadinya kesalahan sewaktu aplikasi menggunakan null pada saat suatu
object sedang dibutuhkan.
 Yang termasuk kesalahan ini adalah :
 Memanggil method dari suatu object yang null
 Menggunakan variabel dari suatu object yang null
 Menggunakan array yang null, serta memakaik/memodifkasi array yang ke-null
 Meng Throw null, pada saat Throwable mempunyai suatu nilai
java.lang.NumberFormatException
Mengindikasikan terjadinya kesalahan sewaktu perubahan tipe data string ke tipe data
numerik, padahal tidak ada format numerik untuk string tersebut.
Contoh :
“123” dapat diubah menjadi suatu numerik (int, double, float dst)
“12AB”. Tidak dapat diubah menjadi suatu numerik (int, double, float dst)
java.lang.RuntimeException
RuntimeException adalah superclass dari Exception yang dapat diThrow selama terjadi
operasi normal pada Java Virtual Machine
java.lang.SecurityException
diThrow oleh Security Manager, yang mengindikasikan kurangnya hak akses sekuriti
java.lang.StringIndexOutOfBoundsException
diThrow oleh method (prosedur/fungsi) bernilai string, yang mengindikasikan bahwa index
String adalah negatif, atau index string lebih besar dari yang seharusnya.
java.lang.UnsupportedOperationException
Mengindikasikan terjadinya kesalahan, karena operasi yang diminta tidak disupport.
Finally
Digunakan sebagai tugas final, atau mewajibkan program mengerjakan suatu tugas setelah
apapun yang terjadi pada blok try, baik berhasil maupun gagal.
Contoh :
setelah membuka suatu file untuk dioperasikan, resource memory untuk file tersebut harus
dibebaskan, agar memory tidak perlu mengingat variabel-variabel file tersebut.
contohFileClass f = new contohFileClass();
if (f.open("/c:/file/name/path")) {
try {
ExceptionYangMungkinTerjadi ();
} finally {
f.close();
}
}
catching finally bisa berlaku seperti contoh dibawah ini :
contohFileClass f = new contohFileClass();
if (f.open("/c:/file/name/path")) {
try {
ExceptionYangMungkinTerjadi ();
} catch (Throwable t) {
f.close();
throw t;
}
}
finally juga dikerjakan tidak hanya setelah Exception , tetapi juga setelah statement retrun ,
break dan contonue statement (yang biasanya terjadi di while atau do-while)
public class finalExceptionku {
public static void main(String untag[]) {
int bilangan;
bilangan = 2;
// cobalah mengubah2 nilai bilangan ini
System.out.print("Sebelum pembagian ");
while (true) {
System.out.print("saksikan perjalannnya ");
try {
System.out.println("sebelum masuk 1 ");
if (bilangan == 1)
return;
System.out.println("sebelum masuk 2 ");
if (bilangan == 2)
break;
System.out.println("sebelum masuk 3 ");
if (bilangan == 3)
continue;
System.out.println("sebelum masuk 4 ");
if (bilangan == 4)
System.out.println("di blok bilangan = 4");
} finally {
System.out.println("blok ini selalu dikerjakan");
}
System.out.println("Statemen pada akhir while");
}
System.out.print("Statement diluar while .\n");
}
}
Download