8. exception handling

advertisement
Pemrograman Berorientasi Object
Apa itu Exception?
 Singkatan dari Exceptional Events.
 Kesalahan (errors) yang terjadi saat runtime, menyebabkan
gangguan pada alur eksekusi program.
 Contoh
 Error pembagian 0
 Mengakses elemen di luar jangkauan sebuah array, input
yang tidak benar
 Membuka file yang tidak ada.
Pada dasarnya, Exception merupakan subkelas dari kelas
java.lang.Throwable
Perbedaan antara Class Error dan Class
Exception di java
 Selain class Exception, java.lang.Throwable juga memiliki
subclass yaitu class Error
 Error Class Untuk menangani error yang muncul pada saat
dijalankan ( run-time error) dan Kemunculannya di luar
control user disebabkan oleh run-time environment
Contoh : out of memory, harddisk crash
 Exception class Menunjukkan kondisi yang dapat diterima
oleh user program.Umumnya disebabkan oleh beberapa
kesalahan pada kode program
Contoh : Eksepsi yg tidak dapat ditangkap
class Exc0 {
public static void main (String args[]) {
int d = 0;
int a = 42 / d;
}
}
belum mengkodekan suatu penangan eksepsi, sehingga penanganan eksepsi
default akan segera dijalankan. Keluaran dari program diatas
java.lang.ArithmeticExpression : /by zero
at Exc0.main (Exc0.java:4)
Menangani Exception
 Untuk menangani exception dalam Java, kita gunakan
blok try-catch-finally.
 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.
try{
//tulis pernyataan yang dapat mengakibatkan exception
//dalam blok ini
}
catch( <exceptionType 1> <varName1> ){
//tulis aksi apa dari program Anda yang dijalankan jika ada
//exception tipe tertentu terjadi
}
...
catch( <exceptionType N> <varName N> ){
//tulis aksi apa dari program Anda yang dijalankan jika ada
//exception tipe tertentu terjadi
}
finally{
//tambahkan kode terakhir di sini
}
Exception dilemparkan selama eksekusi dari blok try dapat ditangkap dan
ditangani dalam blok catch. Kode dalam blok finally selalu di-eksekusi.
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.
class Exc2 {
public static void main (String args[]) {
try {
int d = 0;
int a = 42 / d;
}
catch (ArithmeticException e) {
System.out.println( Division By Zero );
}}}
Outputnya:
Division By Zero
Finally
 Blok
finally mengandung
penggunaan try dan catch
kode
penanganan
setelah
 Blok kode ini selalu tereksekusi walaupun sebuah
exception terjadi atau tidak pada blok try.
 Blok kode tersebut juga akan menghasilkan nilai true
meskipun return, continue ataupun break tereksekusi
aspek kunci tentang sintak dari
konstruksi try-catch-finally:
 Notasi blok bersifat perintah
 Setiap blok try, terdapat satu atau lebih blok catch, tetapi hanya satu
blok finally.
 Blok catch dan blok finally harus selalu muncul dalam konjungsi
dengan blok try, dan diatas urutan Blok try harus diikuti oleh paling
sedikit satu blok catch ATAU satu blok finally, atau keduanya.
 Setiap blok catch mendefinisikan sebuah penanganan exception.
Header dari blok catch harus membawa satu argumen, dimana
exception pada blok tersebut akan ditangani. Exception harus menjadi
class pelempar atau satu dari subclassesnya.
Throw
 Disamping menangkap exception
 Java juga dapat melempar sebuah exception.
 Sintaks pelemparan exception cukup sederhana.
throw <exception object>;
Contoh :
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( recaugt : + e); }
}}
Output :
caught inside demoproc
recaught : java.lang.NullPointerException : demo
Throws
 Sebuah method dapat menyebabkan sebuah exception
namun tidak menangkapnya, maka digunakan keyword
throws.
 Aturan ini hanya berlaku pada checked exception.
 Berikut ini penulisan syntax menggunakan keyword
throws :
<type> <methodName> (<parameterList>)
throws <exceptionList> {
<methodBody>
}
Contoh :
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); }
}}
Output :
Inside procedure
caught java.lang.IllegalAccessException : demo
contoh program yang menunjukkan beberapa method yang keluar dengan
berbagai cara, tidak satupun tanpa mengeksekusi bagian finally-nyA.
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 ); }
}
public static void main(String args[]) {
Output :
try { procA( ); }
Inside procA..
catch (Exception e){ };
procA is finally
procB(); }
Inside procB..
procB is finally
}
Download