Download - Exception - Gunadarma
EXCEPTION Exception Handling – Penanganan
Kesalahan
A Little Demo
public class Test {
public static void main(String[] args) {
int i = 6;
int j = 3;
System.out.println(i/j);
}
}
Output :
2
A Little Demo
public class Test {
public static void main(String[] args) {
int i = 6;
int j = 0;
System.out.println(i/j);
}
}
Output :
Exception in thread "main"
java.lang.ArithmeticException: / by zero
at Test.main(Test.java:4)
Exception Handling
• Eksepsi adalah keadaan tidak normal yang muncul pada
suatu bagian program pada saat dijalankan
• Penanganan eksepsi pada java membawa pengelolaan
kesalahan program saat dijalankan kedalam orientasi-
objek
• Eksepsi java adalah objek yang menjelaskan suatu
keadaan eksepsi yang muncul pada suatu bagian
program.
Exception Handling
• Suatu object Error khusus yang dibuat ketika terjadi suatu
kesalahan pada suatu program. Dengan exception
handling yang baik suatu program akan terhindar dari
”Hang”
• Exception dipicu oleh run time error dan digunakan
sebagai sarana melaporkan kondisi - kondisi kesalahan
Predefined Exceptions
Java Exception
Code to Cause It
NullPointerException
String s = null;
s.length();
ArithmeticException
int a = 3;
int b = 0;
int q = a/b;
ArrayIndexOutOfBoundsException
int[] a = new int[10];
a[10];
ClassCastException
Object x =
new Integer(1);
String s = (String) x;
StringIndexOutOfBoundsException
String s = "Hello";
s.charAt(5);
Jenis – Jenis Exception
• Exception merupakan objek dari subkelas yang
diturunkan dari kelas Throwable. Kelas Throwable ini
terdapat dalam package java.lang.object.
Throwable
Error Exception
RuntimeException ...
...
...
Object
Jenis – Jenis Exception
• Kelompok Kelas Error
Error ini bersifat fatal sehingga sistem tidak dapat
dimanipulasi untuk diperbaiki, contoh kelas: LinkageError,
VirtualMachineError, dan AWTError.
• Kelompok Kelas Exception
Jenis error ini masih dapat diantisipasi dengan
menyisipkan statement tambahan untuk mendeteksi data
yang berpotensi menimbulkan error.
Jenis – Jenis Exception
• Ada kelompok exception yang diperiksa oleh interpreter,
apakah akan ditangani atau dilempar, namun ada pula
exception yang akan tidak diperiksa interpreter.
• Disamping itu programmer dibolehkan membuat
exception sendiri dengan cara extends atau implements
kelas Exception
Tabel Checked Exception
Tabel Unchecked Exception
Tabel Unchecked Exception
• Dua Exception yang belum dikelompokkan, yaitu IOException dan
AWTException.
Exception Handling
• Try
• Catch
• Throw
• Throws
• Finally
Exception Handling
• Pada dasarnya try digunakan untuk mengeksekusi suatu
bagian program, dan jika muncul kesalahan, sistem akan
melakukan throw suatu eksepsi yang dapat anda catch
berdasarkan tipe eksepsinya, atau yang anda berikan
finally dengan penangan default.
Exception Handling
Berikut ini bentuk dasar bagian penanganan eksepsi :
try {
//pemanggilan method yg mungkin menghasilkan exception
//blok statement yg mungkin menghasilkan exception
}
catch(TipeException1 namaObjek) {
// penanganan salah-satu jenis exception
}
catch(TipeException2 namaObjek) {
// penanganan salah-satu jenis exception
}
catch(TipeExceptionN namaObjek) {
// penanganan salah-satu jenis exception
}
finally {
// blok yang harus dieksekusi
}
Exception Handling
try {
// Block of Code
}
catch (ExceptionType1 e) {
// Exception Handler for ExceptionType1
}
catch (ExceptionType2 e) {
// Exception Handler for ExceptionType2
throw (e); // re-throw the Exception
}
finally { }
Exception Handling
• Blok try tidak exception, maka blok catch tidak ada yang
dieksekusi dan segera blok finally yang dieksekusi.
• Jika terjadi exception pada blok try, maka salah satu blok
catch dieksekusi, kemudian blok finally dieksekusi.
Mekanisme Mengantisipasi Exception
Tiga kemungkinan skenario exception :
1. jika tidak terjadi exception (tidak ada blok catch yang
dieksekusi)
2. jika exception terjadi pada blok method tunggal (salah-
satu blok catch dieksekusi)
3. jika terjadi exception pada blok tersarang.
Mekanisme Mengantisipasi Exception
Try dan Catch
• Kata kunci try digunakan untuk menentukan suatu blok
program yang harus dijaga terhadap semua eksepsi
• Setelah blok try masukkan bagian catch, yang
menentukan tipe eksepsi yang akan ditangkap.
try {
//Blok yang akan ditangkap sekiranya terjadi
exception
}
catch(parameter)
//Blok yang akan dijalankan kalau terjadi
exception
}
Try dan Catch
class trycatch{
public static void main (String args[]) {
try {
int d = 0;
int a = 42 / d;
}
catch (ArithmeticException e) {
System.out.println( “Division By Zero” );
}
}
}
Throw
• Pernyataan throw digunakan untuk secara eksplisit
melemparkan suatu eksepsi.
• Pertama kita harus mendapatkan penanganan dalam
suatu instance throwable, melalui suatu parameter
kedalam bagian catch, atau dengan membuatnya
menggunakan operator new.
• Aliran eksekusi akan segera terhenti setelah pernyataan
throw, dan pernyataan selanjutnya tidak akan dicapai.
Throw
class throwDemo {
static void demoProc() {
try {
throw new NullPointerException( “demo” ); }
catch (NullPointerException e) {
System.out.println( “caught inside demoproc” );
throw e; }
}
public static void main (String args[]) {
try { demoProc(); }
catch (NullPointerException e) {
System.out.println( “recaught : “ + e); }
}
}
Throws
• Kata kunci throws digunakan untuk mengenali daftar
eksepsi yang mungkin di-throw oleh suatu method
• Jika tipe eksepsinya adalah error, atau RuntimeException,
atau suatu subclassnya, aturan ini tidak berlaku, karena
tidak diharapkan sebagai bagian normal dari kerja
program
Throws
class ThrowsDemo {
static void procedure () throws
IllegalAccessException {
System.out.println( “Inside Procedure” );
throw new IllegalAccessException( “demo” );
}
public static void main(String args[]) {
try { procedure(); }
catch (IllegalAccessException e) {
System.out.println( “caught “ + e); }
}
}
Finally
• Saat suatu eksepsi dilemparkan, alur program dalam
suatu method membuat jalur yang cenderung tidak linier
melalui method tersebut, melompati baris-baris tertentu,
bahkan mungkin akan keluar sebelum waktunya pada
kasus dimana tidak ada bagian catch yang cocok.
• Kadang-kadang perlu dipastikan bahwa bagian program
yang diberikan akan berjalan, tidak perduli eksepsi apa
yang terjadi dan ditangkap.
• Kata kunci finally dapat digunakan untuk menentukan
bagian program seperti itu.
Finally
class finallyDemo {
static void procA() {
try { System.out.println( “Inside procA..” );
throw new RuntimeException( “Demo” ); }
finally { System.out.println( “procA is finally”
); }
}
static void procB() {
try { System.out.println( “Inside procB..” );
return; }
finally { System.out.println( “procB is finally”
); }
}
Finally
public static void main(String args[]) {
try { procA( ); }
catch (Exception e){ };
procB(); }
}