Anda di halaman 1dari 20

EXCEPTION

HANDLING

By Mardiyyah Hasnawi
PENGERTIAN
O Exception adalah event yang terjadi ketika program
menemui kesalahan pada saat instruksi program dijalankan
O Exception merupakan sebuah peristiwa yang menjalankan
alur proses normal pada program.
O Peristiwa ini biasanya berupa kesalahan(error) dari beberapa
bentuk. Ini disebabkan program kita berakhir tidak normal.
O Banyak hal yang dapat menimbulkan event ini, misalnya
crash, harddisk rusak dengan tiba-tiba, sehingga program-
program tidak bisa mengakses file-file tertentu.
Bentuk Exception
O Dalam bahasa Java, ketika terjadi kesalahan, otomatis
akan dilemparkan sebuah objek yang disebut exception,
yang kemudian dapat diproses lebih lanjut oleh fungsi-
fungsi yang siap menangani kesalahan tersebut.
O Proses pelemparan exception tersebut sering dikenal
dengan istilah throwing exception,
O Proses penerimaan exception yang bersangkutan dikenal
dengan istilah catch exception.
Macam-macam exception
O Perbaikan lebih jauh disediakan oleh subclass exception untuk
keadaan eksepsi yang dihasilkan oleh runtime yang disebut
RunTimeException
O Exception terdiri dari dua macam kelompok, yaitu :
1. Exception yang merupakan subclass RunTimeException
2. Exception yang bukan subclass RunTimeException
O RunTimeException biasanya disebabkan oleh kesalahan program
atau pada desain program.
O Misalnya NullPointerException yang disebabkan oleh proses
inisialisasi program yang tidak sempurna dan
ArrayIndexOutOfBoundsException yang disebabkan akses array
yang melebihi kapasitas array yang ada.
Dasar-dasar penanganan
Eksepsi
O Penanganan eksepsi pada java diatur dengan lima kata
kunci : Try, catch, throw, throws, dan finally.
O Pada dasarnya try digunakan untuk mengeksekusi suatu
bagian program,
O Jika muncul kesalahan, sistem akan melakukan throw
suatu eksepsi yang dapat di- catch berdasarkan tipe
eksepsinya, atau yang diberikan finally dengan
penanganan default
Dasar Penanganan Eksepsi
Bentuk umum dari blok try-catch-finally
try{ try{
//tulis pernyataan yang dapat
// block of code mengakibatkan exception
//dalam blok ini
}catch(ExceptionType1 e){ }
// Penangan kesalahan catch( <exceptionType1>
<varName1> ){
ExceptionType1
//tulis aksi apa dari program Anda
}catch(ExceptionType2 e){ yang dijalankan jika ada
//exception tipe tertentu terjadi
// Penangan kesalahan }
ExceptionType2 . . .
throw(e); catch( <exceptionTypen>
<varNamen> ){
} finally{ //tulis aksi apa dari program Anda
yang dijalankan jika ada
//exception tipe tertentu terjadi
} }
finally{
//tambahkan kode terakhir di sini
}
Penangan satu Eksepsi
class DivByZero { class DivByZero {
public static void
public static void main(String main(String args[]) {
args[]) { try {

System.out.println(3/0); System.out.println(3/0);
System.out.println("Cetak."); System.out.println("Cetak.");
} } catch
(ArithmeticException exc) {
} //Reaksi
atas kejadian

System.out.println(exc);
}

System.out.println("Setelah
Exception.");
}
}
Penangan lebih dari satu
Eksepsi
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.");
}
}
Implementasikan finally dalam blok try-
cacth
class FinallyDemo {
static void myMethod(int n) throws Exception{
try {
switch(n) {
case 1: System.out.println("case pertama");
return;
case 3: System.out.println("case ketiga");
throw new RuntimeException("demo case ketiga");
case 4: System.out.println("case keempat");
throw new Exception("demo case keempat");
case 2: System.out.println("case Kedua");
}
} catch (RuntimeException e) {
System.out.print("RuntimeException terjadi: ");
System.out.println(e.getMessage());
} finally {
System.out.println("try-block entered.");
}
}
Lanjutan...
public static void main(String args[]){
for (int i=1; i<=4; i++) {
try {
FinallyDemo.myMethod(i);
} catch (Exception e){

System.out.print("Exception terjadi: ");

System.out.println(e.getMessage());
}
System.out.println();
}
}
}
try-catch-finally
O 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.
Error dan Exception Classes
O Seluruh exceptions adalah subclasses, baik secara langsung maupun
tidak langsung, dari sebuah root class Throwable.
O Class Throwable digunakan untuk merepsentasikan semua keadaan
eksepsi.
O Dua subclass langsung throwable didefinisikan untuk membagi
class throwable menjadi dua cabang yang berbeda. class ini
terdapat dua kategori umum : Error class dan Exception class.
O Exception class menunjukkan kondisi yang dapat diterima oleh user
program.
O Class Exception digunakan untuk keadaan eksepsi yang harus
ditangkap oleh program yang dibuat
O Class Error yang mendefinisikan keadaan yang tidak diharapkan
untuk ditangkap dalam lingkungan normal
O Class error biasanya dihasilkan sebagai respon dari ekgagalan yang
berbahaya.
Objek Exception
O Objek exception yang dihasilkan dapat dimanfaatkan untuk mengetahui
lebih lanjut mengenai error atau exception yang terjadi.
O Exception merupakan subclass dari class Throwable yang mendefinisikan
beberapa method yang juga diwarisi oleh exception.
O Tiga method yang penting adalah :
1. getMessage() : Method ini mengembalikan isi pesan untuk
menggambarkan exception yang terjadi.
2. printStackTrace() : Method ini menampilkan pesan error dan stack trace ke
standard error output stream yang biasanya merupakan konsol windows
apabila program merupakan program konsol.
3. printStackTrace(PrintStream s): Method ini menampilkan pesan error ke
objek PrintStream yang dijadikan parameter. Apabila ingin menampilkan
pesan ke konsol, dapat menggunakan System.out sebagai parameter.
Melempar Exception
O Sintax pelemparan exception cukup sederhana.
throw <exception object>;
Contoh :
/* Melempar exception jika terjadi kesalahan input */
class ThrowDemo {
public static void main(String args[]){
String input = "invalid input";
try {
if (input.equals("invalid input")) {
throw new RuntimeException("throw demo");
} else {
System.out.println(input);
}
System.out.println("After throwing");
} catch (RuntimeException e) {
System.out.println("Exception caught here.");
System.out.println(e);
}
}}
Keyword Throws
O penulisan syntax menggunakan keyword throws :
<type> <methodName> (<parameterList>) throws <exceptionList> {
<methodBody>
}
Contoh :
class ThrowingClass {
static void myMethod() throws ClassNotFoundException {
throw new ClassNotFoundException ("just a demo");
}
}
class ThrowsDemo {
public static void main(String args[]) {
try {
ThrowingClass.myMethod();
} catch (ClassNotFoundException e) {
System.out.println(e);
}
}
}
Assertions
O Assertion dapat diartikan sebagai extensi atas komentar yang
menginformasikan pembaca kode bahwa sebagian kondisi harus
terpenuhi.
O Penulisan assertions memiliki dua bentuk.
1. Bentuk yang paling sederhana terlihat sebagai berikut :
assert <expression1>;
dimana <expression1> adalah kondisi dimana assertion
bernilai true.
2. Bentuk yang lain menggunakan dua ekspresi, berikut ini cara
penulisannya :
assert <expression1> : <expression2>;
dimana <expression1> adalah kondisi assertion bernilai true dan
<expression2> adalah informasi yang membantu pemeriksaan
mengapa program mengalami kesalahan.
Contoh
class Assert {
public static void main(String args[]) {
int Angka = Integer.parseInt(args[0]);
assert(Angka>0);

if (Angka >= 18) {


System.out.println("angka 17 ke atas");
}
}
}
Tugas
1. Buatlah program Java yang memiliki/menggunakan
blok catch lebih dari satu !
2. Jelaskan tentang keyword ‘throw’ dan ‘throws’ , dan
buatlah program java untuk keduanya !
3. Apa perbedaan antara keyword throw dengan
keyword throws !
4. Jelaskan fungsi pembuatan subclass eksepsi sendiri ,
dan berikan contoh pemrograman java-nya !

Anda mungkin juga menyukai