Exception Handling
Exception Handling
(Penanganan Error)
As’ad Djamalilleil
http://kampusku.my.id
asad.kom@gmail.com
Definisi Exception
• Exceptional Event sebuah event yang
terjadi pada waktu eksekusi dari sebuah
program, dimana mengganggu alir normal
dari instruksi program
• Ketika terjadi error dalam sebuah method,
maka method akan membuat sebuah
objek (exception object) yang berisi
informasi tentang error tersebut
Contoh exception
• User memasukkan data yang tidak tepat,
misalnya: data angka yang diinginkan tapi
huruf yang dimasukkan
• Sebuah file yang akan dibuka tidak
ditemukan
• Koneksi jaringan yang putus ditengah
komunikasi yang sedang berlangsung
• Dan lain-lain
Exception Handler
• Throwing exception membuat sebuah
objek exception dan mengirimnya ke
sistem runtime
• Exception handler sebuah blok yang
berisi kode program untuk menangani
exception
• Catching exception Blok yang terpilih
untuk menangani jenis exception itu
bertugas menangkap exception
3 macam exception
• Checked exception
– Membaca file menggunakan class java.io.FileReader
namun file tidak ditemukan sehingga memicu
exception java.io.FileNotFoundException
• Error (eksternal)
– Kerusakan file pada saat pembacaan akan memicu
exception java.io.IOError
• Runtime exception (internal)
– Exception yang diakibatkan oleh masalah internal
seperti kesalahan logika atau yang diistilahkan
dengan bug
Hirarki Exception
• Semua class exception merupakan
turunan dari class java.lang.Exception
• Class Exception memiliki 2 sub-class,
yaitu class IOException dan
RuntimeException
Checked Exception
Exception Keterangan
}
catch(TipeException e) {
import java.io.*;
public class CobaSaja{
}
catch(TipeException1 e1){
}
catch(TipeException2 e2) {
}
catch(TipeException3 e3) {
}
• Jika terjadi exception, maka exception
akan dilempar ke blok catch pertama.
• Bila tipenya cocok dengan exception yang
dilempar, maka akan ditangkap di blok
catch tersebut, namun bila tidak cocok
maka akan diteruskan ke blok catch
berikutnya
• Dan seterusnya
Contoh 2
try {
file = new FileInputStream(namaFile);
x = (byte) file.read();
}
catch(FileNotFoundException f) {
f.printStackTrace();
return -1;
}
catch(IOException i) {
i.printStackTrace();
return -1;
}
Keyword throws dan throw
• Ada beberapa method yang mengharuskan
aplikasi untuk dapat menangani exception
• Bila sebuah method tidak kita inginkan untuk
menangani exception, method tersebut harus
dideklarasikan dengan menggunakan keyword
throws pada akhir kepala method
• Exception dapat dilempar menggunakan
keyword throw
Contoh 3.a
import java.io.*;
public class Coba{
public static void main(String[] args){
DataInputStream dis = new DataInputStream(System.in);
String s = dis.readLine();
// IOException harus ditangkap
int a = 0;
try{
a = Integer.parseInt(s);
}catch(NumberFormatException e){}
System.out.println(a);
}
}
Contoh 3.b
import java.io.*;
public class Coba{
public static void main(String[] args)throws IOException{
DataInputStream dis = new DataInputStream(System.in);
String s = dis.readLine();
// IOException harus ditangkap
int a = 0;
try{
a = Integer.parseInt(s);
}catch(NumberFormatException e){}
System.out.println(a);
}
}
Contoh 4
import java.io.*;
public class Coba{
public static void main(String[] args)throws Exception{
DataInputStream dis = new DataInputStream(System.in);
System.out.print("Input tanggal:");
try{
int tgl = Integer.parseInt(dis.readLine());
if(tgl<1 || tgl>31)
throw new Exception("Tanggal tdk benar!");
}catch(NumberFormatException e){
System.out.println("Nilai yg diinput bukan angka!");
}catch(IOException e){
System.out.println("Kesalan penginputan!");
}
}
}
Keyword finally
• Keyword finally digunakan untuk membuat
sebuah blok yang mengikuti blok try
• Kode program di dalam blok finally selalu
dieksekusi, pada saat exception terjadi
atau tidak
• Penggunaan blok finally memungkinkan
kita untuk menjalankan pernyataan
cleanup yang ingin dieksekusi, dalam
kondisi apapun
Sintaks Finally
try {
}
catch(TipeException e) {
}
finally {
}
Contoh 5
import java.io.*;
public class Coba{
}
Contoh 6.a
// Nama file InsufficientFundsException.java
import java.io.*;