Top Banner
Exception Handling Lanjutan Prepared by Viska Mutiawani 1 [email protected]
44

Exception Handling Lanjutan - Jurusan Informatikainformatika.unsyiah.ac.id/~viska/pjl/P7-1 Exception... · 2015-03-23 · 2 [email protected]. ... Contoh skenario unchecked exception

Mar 12, 2019

Download

Documents

lydien
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Exception Handling Lanjutan - Jurusan Informatikainformatika.unsyiah.ac.id/~viska/pjl/P7-1 Exception... · 2015-03-23 · 2 viska@unsyiah.ac.id. ... Contoh skenario unchecked exception

Exception Handling Lanjutan

Prepared by Viska Mutiawani

1 [email protected]

Page 2: Exception Handling Lanjutan - Jurusan Informatikainformatika.unsyiah.ac.id/~viska/pjl/P7-1 Exception... · 2015-03-23 · 2 viska@unsyiah.ac.id. ... Contoh skenario unchecked exception

Subtopik Exception handling lanjutan

Assertion

Exception handling: try-catch-finally

Exception handling: try-with-resources statement

Keyword throws

Keyword throw Keyword throw

Exception handling pada method overriding

2 [email protected]

Page 3: Exception Handling Lanjutan - Jurusan Informatikainformatika.unsyiah.ac.id/~viska/pjl/P7-1 Exception... · 2015-03-23 · 2 viska@unsyiah.ac.id. ... Contoh skenario unchecked exception

AssertionAssertion

[email protected]

Page 4: Exception Handling Lanjutan - Jurusan Informatikainformatika.unsyiah.ac.id/~viska/pjl/P7-1 Exception... · 2015-03-23 · 2 viska@unsyiah.ac.id. ... Contoh skenario unchecked exception

What is assertion?

Assertion merupakan statement dalam bahasa Java yang dapat digunakan untuk menguji program berdasarkan asumsi-asumsi.

Sewaktu eksekusi assertion, asumsi tersebut dipercaya benar.

Jika gagal, maka JVM akan melempar error bernama Jika gagal, maka JVM akan melempar error bernama AssertionError.

Diperkenalkan pada Java versi ke 4.

[email protected]

Page 5: Exception Handling Lanjutan - Jurusan Informatikainformatika.unsyiah.ac.id/~viska/pjl/P7-1 Exception... · 2015-03-23 · 2 viska@unsyiah.ac.id. ... Contoh skenario unchecked exception

Kegunaan assertion

Berguna untuk mendeteksi dan mengoreksi error pemrograman.

Assertion utamanya digunakan untuk tujuan pengujian.

[email protected]

Page 6: Exception Handling Lanjutan - Jurusan Informatikainformatika.unsyiah.ac.id/~viska/pjl/P7-1 Exception... · 2015-03-23 · 2 viska@unsyiah.ac.id. ... Contoh skenario unchecked exception

Syntax assertion

Ada 2 cara membuat assertion:

assert expression;

assert expression1 : expression2;

Fitur assertion secara default dalam kondisi disable (tidak aktif).

Jadi anda harus enable (aktifkan) dahulu. Caranya:

Gunakan, -ea or -enableassertions pada perintah java.

Contoh sesudah mengkompil: javac AssertionExample.java

Maka run dengan cara: java -ea AssertionExample

[email protected]

Page 7: Exception Handling Lanjutan - Jurusan Informatikainformatika.unsyiah.ac.id/~viska/pjl/P7-1 Exception... · 2015-03-23 · 2 viska@unsyiah.ac.id. ... Contoh skenario unchecked exception

Contohimport java.util.Scanner;

class AssertionExample{

public static void main( String args[] ){

Scanner scanner = new Scanner( System.in );

System.out.print("Enter ur age ");

int value = scanner.nextInt();int value = scanner.nextInt();

assert value>=18:" Not valid";

System.out.println("value is "+value);

}

}

Contoh hasil output:

Output: Enter ur age 11

Exception in thread "main" java.lang.AssertionError: Not valid

[email protected]

Page 8: Exception Handling Lanjutan - Jurusan Informatikainformatika.unsyiah.ac.id/~viska/pjl/P7-1 Exception... · 2015-03-23 · 2 viska@unsyiah.ac.id. ... Contoh skenario unchecked exception

Kondisi tidak menggunakan assertion

Ada beberapa keadaan dimana anda sebaiknya tidak menggunakan assertion:

Diambil dari web Oracle, assertion sebaiknya tidak digunakan untuk mengecek argumen pada method public. Karena dapat menghasilkan runtime exception seperti: IllegalArgumentException, NullPointerException seperti: IllegalArgumentException, NullPointerException etc.

Jangan gunakan assertion, jika anda tidak menginginkan error pada situasi apapun.

[email protected]

Page 9: Exception Handling Lanjutan - Jurusan Informatikainformatika.unsyiah.ac.id/~viska/pjl/P7-1 Exception... · 2015-03-23 · 2 viska@unsyiah.ac.id. ... Contoh skenario unchecked exception

Exception handling: Try-catch-Exception handling: Try-catch-finally

[email protected]

Page 10: Exception Handling Lanjutan - Jurusan Informatikainformatika.unsyiah.ac.id/~viska/pjl/P7-1 Exception... · 2015-03-23 · 2 viska@unsyiah.ac.id. ... Contoh skenario unchecked exception

What is exception?

Exception: kondisi abnormal

Pada bahasa Java, exception merupakan suatu peristiwa yang mengganggu jalannya program secara normal.

Berupa objek yang dilempar sewaktu runtime.

[email protected]

Page 11: Exception Handling Lanjutan - Jurusan Informatikainformatika.unsyiah.ac.id/~viska/pjl/P7-1 Exception... · 2015-03-23 · 2 viska@unsyiah.ac.id. ... Contoh skenario unchecked exception

What is exception handling?

Merupakan mekanisme untuk menangani error runtime seperti ClassNotFound, IO, SQL, Remote etc.

Kegunaannya:

Menjaga aliran normal dari program/aplikasi

[email protected]

Page 12: Exception Handling Lanjutan - Jurusan Informatikainformatika.unsyiah.ac.id/~viska/pjl/P7-1 Exception... · 2015-03-23 · 2 viska@unsyiah.ac.id. ... Contoh skenario unchecked exception

Skenario Andai ada statement seperti di bawah:

statement 1;statement 2;statement 3;statement 4;statement 5;//exception occursstatement 6;statement 7;statement 7;statement 8;statement 9;statement 10;

Jika exception muncul pada statement 5, makastatement 6-10 tidak akan dijalankan.

Namun jika kita melakukan exception handling, makastatement 6-10 bisa dijalankan.

[email protected]

Page 13: Exception Handling Lanjutan - Jurusan Informatikainformatika.unsyiah.ac.id/~viska/pjl/P7-1 Exception... · 2015-03-23 · 2 viska@unsyiah.ac.id. ... Contoh skenario unchecked exception

Hirarki class Exception

[email protected]

Page 14: Exception Handling Lanjutan - Jurusan Informatikainformatika.unsyiah.ac.id/~viska/pjl/P7-1 Exception... · 2015-03-23 · 2 viska@unsyiah.ac.id. ... Contoh skenario unchecked exception

Tipe-tipe exception

Checked exception Dicek saat kompilasi

Class yang extendThrowable (kecuali RuntimeExceptiondan Error) merupakan checked exception.

Unchecked exception Tidak dicek saat kompilasi, baru dicek saat runtime Tidak dicek saat kompilasi, baru dicek saat runtime

Class yang extend RuntimeException termasukunchecked exception, seperti ArithmeticException, NullPointerException, ArrayIndexOutOfBoundsException

Error Keadaan fatal yang terjadi

Contoh: OutOfMemoryError, VirtualMachineError, AssertionError

[email protected]

Page 15: Exception Handling Lanjutan - Jurusan Informatikainformatika.unsyiah.ac.id/~viska/pjl/P7-1 Exception... · 2015-03-23 · 2 viska@unsyiah.ac.id. ... Contoh skenario unchecked exception

Contoh skenario unchecked exception

Pembagian dengan 0.int a=50/0; //ArithmeticException

Jika variabel menyimpan null, dan variabel tadidipakai.

String s=null;

System.out.println(s.length());//NullPointerException

Kesalahan format numberString s="abc";

int i=Integer.parseInt(s);//NumberFormatException

Memasukkan data ke dalam indeks yang salah padaarray

int a[]=new int[5];

a[10]=50; //ArrayIndexOutOfBoundsException

[email protected]

Page 16: Exception Handling Lanjutan - Jurusan Informatikainformatika.unsyiah.ac.id/~viska/pjl/P7-1 Exception... · 2015-03-23 · 2 viska@unsyiah.ac.id. ... Contoh skenario unchecked exception

Exception handling dengan try-catch-finally

Salah satu cara untuk menghandle exception adalah dengan menggunakan blok try-catch-finally.

Try: berisi bagian yang akan menghasilkan exception

Catch: jika exception muncul akan ditangkap dan dihandle

Finally: akan selalu dilakukan walau tidak ada exception Finally: akan selalu dilakukan walau tidak ada exception

Syntax:

try{

//code that may throw exception

}

catch(Exception_class_Name ref){}

finally{}

[email protected]

Page 17: Exception Handling Lanjutan - Jurusan Informatikainformatika.unsyiah.ac.id/~viska/pjl/P7-1 Exception... · 2015-03-23 · 2 viska@unsyiah.ac.id. ... Contoh skenario unchecked exception

Contoh sederhana

public class Testtrycatch2{

public static void main(String args[]){

try{

int data=50/0;

}catch(ArithmeticException e){System.out.println(e);}

System.out.println("rest of the code...");

}

}

[email protected]

Page 18: Exception Handling Lanjutan - Jurusan Informatikainformatika.unsyiah.ac.id/~viska/pjl/P7-1 Exception... · 2015-03-23 · 2 viska@unsyiah.ac.id. ... Contoh skenario unchecked exception

Multiple catch

Jika anda membuat coding untuk memproses sesuatu dan akan menghasilkan beberapa jenis exception, anda dapat menggunakan banyak catch sekaligus.

Namun saat ada satu exception maka hanya akan ada satu catch yang paling sesuai yang digunakan.ada satu catch yang paling sesuai yang digunakan.

Multiple catch blok harus disusun dari yang paling spesifik hingga yang paling umum.

[email protected]

Page 19: Exception Handling Lanjutan - Jurusan Informatikainformatika.unsyiah.ac.id/~viska/pjl/P7-1 Exception... · 2015-03-23 · 2 viska@unsyiah.ac.id. ... Contoh skenario unchecked exception

Mana yang betul?public class TestMultipleCatchBlock{

public static void main(String args[]){

try{

int a[]=new int[5];

a[5]=30/0;

}

catch(ArithmeticException e){ System.out.println("task1 is completed");}

class TestMultipleCatchBlock1{

public static void main(String args[]){

try{

int a[]=new int[5];

a[5]=30/0;

}

catch(Exception e){ );}

catch(ArrayIndexOutOfBoundsException e){System.out.println("task 2 completed");}

catch(Exception e){System.out.println("common task completed");}

System.out.println("rest of the code...");

}

}

System.out.println("common task completed");}

catch(ArithmeticException e){ System.out.println("task1 is completed");}

catch(ArrayIndexOutOfBoundsException e){System.out.println("task 2 completed");}

System.out.println("rest of the code...");

}

}

[email protected]

Page 20: Exception Handling Lanjutan - Jurusan Informatikainformatika.unsyiah.ac.id/~viska/pjl/P7-1 Exception... · 2015-03-23 · 2 viska@unsyiah.ac.id. ... Contoh skenario unchecked exception

Nested Try Try juga bisa nested (berada di dalam try yang lain) bila diperlukan.class Excep6{

public static void main(String args[]){

try{

try{

System.out.println("going to divide");

int b =39/0;

}catch(ArithmeticException e){System.out.println(e);}

try{try{

int a[]=new int[5];

a[5]=4;

}catch(ArrayIndexOutOfBoundsException e){System.out.println(e);}

System.out.println("other statement);

}catch(Exception e){System.out.println("handeled");}

System.out.println("normal flow..");

}

}

[email protected]

Page 21: Exception Handling Lanjutan - Jurusan Informatikainformatika.unsyiah.ac.id/~viska/pjl/P7-1 Exception... · 2015-03-23 · 2 viska@unsyiah.ac.id. ... Contoh skenario unchecked exception

Finally block

Digunakan untuk eksekusi code penting seperti tutup connection, tutup stream.

Akan selalu dieksekusi Akan selalu dieksekusi saat exception dihandle atau tidak dihandle.

Haruslah sesudah block try atau block catch.

[email protected]

Page 22: Exception Handling Lanjutan - Jurusan Informatikainformatika.unsyiah.ac.id/~viska/pjl/P7-1 Exception... · 2015-03-23 · 2 viska@unsyiah.ac.id. ... Contoh skenario unchecked exception

Exception handling: try-with-Exception handling: try-with-resources statement

[email protected]

Page 23: Exception Handling Lanjutan - Jurusan Informatikainformatika.unsyiah.ac.id/~viska/pjl/P7-1 Exception... · 2015-03-23 · 2 viska@unsyiah.ac.id. ... Contoh skenario unchecked exception

Try-with-resources

Merupakan bentuk statemen try yang mendeklarasikan satu atau lebih sumber/resource.

Resouce: merupakan objek yang harus ditutup setelah program selesai menggunakannya.

Try-with-resource memastikan setiap resource yang dipakai akan ditutup setelah statemen resource dipakai akan ditutup setelah statemen resource selesai digunakan.

Setiap objek yang mengimplement java.lang.AutoCloseable, java.io.Closeable, dapat menjadi resource.

[email protected]

Page 24: Exception Handling Lanjutan - Jurusan Informatikainformatika.unsyiah.ac.id/~viska/pjl/P7-1 Exception... · 2015-03-23 · 2 viska@unsyiah.ac.id. ... Contoh skenario unchecked exception

Try-with-resources

Sebelum Java versi 7, untuk menutup resource (biasanya stream I/O, SQL connection) bisa menggunakan blok finally.

Dengan menggunakan try-with-resource, method close() akan otomatis dipanggil sesudah resource selesai digunakan.selesai digunakan.

[email protected]

Page 25: Exception Handling Lanjutan - Jurusan Informatikainformatika.unsyiah.ac.id/~viska/pjl/P7-1 Exception... · 2015-03-23 · 2 viska@unsyiah.ac.id. ... Contoh skenario unchecked exception

Bandingkan!

[email protected]

Page 26: Exception Handling Lanjutan - Jurusan Informatikainformatika.unsyiah.ac.id/~viska/pjl/P7-1 Exception... · 2015-03-23 · 2 viska@unsyiah.ac.id. ... Contoh skenario unchecked exception

Bandingkan

[email protected]

Page 27: Exception Handling Lanjutan - Jurusan Informatikainformatika.unsyiah.ac.id/~viska/pjl/P7-1 Exception... · 2015-03-23 · 2 viska@unsyiah.ac.id. ... Contoh skenario unchecked exception

Kondisi try-catch-finally

Anda harus mengecek apakah resource yang digunakan null sebelum menutupnya.

Menutup resource juga dapat menghasilkan exception, sehingga harus dihandle dalam try-cathc juga.

Programmer sering lupa untuk menutup resource. Programmer sering lupa untuk menutup resource.

[email protected]

Page 28: Exception Handling Lanjutan - Jurusan Informatikainformatika.unsyiah.ac.id/~viska/pjl/P7-1 Exception... · 2015-03-23 · 2 viska@unsyiah.ac.id. ... Contoh skenario unchecked exception

Keyword throwsKeyword throws

[email protected]

Page 29: Exception Handling Lanjutan - Jurusan Informatikainformatika.unsyiah.ac.id/~viska/pjl/P7-1 Exception... · 2015-03-23 · 2 viska@unsyiah.ac.id. ... Contoh skenario unchecked exception

Keyword throws

Keyword throws digunakan untuk mendeklarasikanexception.

Memberitahu bahwa coding akan menghasilkanexception dan menerima konsekuensi.

Exception Handling dengan try-catch-finally dan try-with-resource biasanya digunakan untukwith-resource biasanya digunakan untukmenghandle checked exceptions. Unchecked exception lebih baik dipastikan tidak terjadi

dengan membuat coding yang baik. Contoh: pembagian dengan 0 sebaiknya sebelum membagi,

pastikan dulu bukan nilai 0.

Error: beyond your control Seperti: VirtualMachineError or StackOverflowError.

[email protected]

Page 30: Exception Handling Lanjutan - Jurusan Informatikainformatika.unsyiah.ac.id/~viska/pjl/P7-1 Exception... · 2015-03-23 · 2 viska@unsyiah.ac.id. ... Contoh skenario unchecked exception

Contoh

Syntax:

return_type method_name() throws exception_class_name{

//method code

}

Contoh:

public void writeList() throws IOException { public void writeList() throws IOException {

PrintWriter out = new PrintWriter(new FileWriter("Out.txt"));

for (int i = 0; i < SIZE; i++) {

out.println("Value at: " + i + " = " + list.get(i));

}

out.close();

}

[email protected]

Coding ini ada array, jadi ada kemungkinan muncul unchecked exception

IndexOutOfBoundsException. Namun unchecked exception tidak harus dimasukkan dalam throws.

Page 31: Exception Handling Lanjutan - Jurusan Informatikainformatika.unsyiah.ac.id/~viska/pjl/P7-1 Exception... · 2015-03-23 · 2 viska@unsyiah.ac.id. ... Contoh skenario unchecked exception

Keyword throwKeyword throw

[email protected]

Page 32: Exception Handling Lanjutan - Jurusan Informatikainformatika.unsyiah.ac.id/~viska/pjl/P7-1 Exception... · 2015-03-23 · 2 viska@unsyiah.ac.id. ... Contoh skenario unchecked exception

Keyword throw

Keyword throw digunakan untuk melempar exception secara eksplisit.

Kita dapat throw checked atau unchecked exception.

Keyword throw biasanya digunakan untuk melempar custom exception.

Syntax:

throw exception;

throw new IOException("sorry device error);

[email protected]

Page 33: Exception Handling Lanjutan - Jurusan Informatikainformatika.unsyiah.ac.id/~viska/pjl/P7-1 Exception... · 2015-03-23 · 2 viska@unsyiah.ac.id. ... Contoh skenario unchecked exception

Contoh

public class TestThrow1{

static void validate(int age){

if(age<18)

throw new ArithmeticException("not valid");

else

System.out.println("welcome to vote");System.out.println("welcome to vote");

}

public static void main(String args[]){

validate(13);

System.out.println("rest of the code...");

}

}

[email protected]

Page 34: Exception Handling Lanjutan - Jurusan Informatikainformatika.unsyiah.ac.id/~viska/pjl/P7-1 Exception... · 2015-03-23 · 2 viska@unsyiah.ac.id. ... Contoh skenario unchecked exception

throw vs throws

[email protected]

Page 35: Exception Handling Lanjutan - Jurusan Informatikainformatika.unsyiah.ac.id/~viska/pjl/P7-1 Exception... · 2015-03-23 · 2 viska@unsyiah.ac.id. ... Contoh skenario unchecked exception

Custom exceptionCustom exception

[email protected]

Page 36: Exception Handling Lanjutan - Jurusan Informatikainformatika.unsyiah.ac.id/~viska/pjl/P7-1 Exception... · 2015-03-23 · 2 viska@unsyiah.ac.id. ... Contoh skenario unchecked exception

Custom exception

Merupakan Exception yang dibuat sendiri.

Dengan menggunakan custom exception, anda dapat memiliki Exception buatan sendiri dan pesan yang anda dapat desain sendiri.

[email protected]

Page 37: Exception Handling Lanjutan - Jurusan Informatikainformatika.unsyiah.ac.id/~viska/pjl/P7-1 Exception... · 2015-03-23 · 2 viska@unsyiah.ac.id. ... Contoh skenario unchecked exception

Contohclass InvalidAgeException extends Exception{

InvalidAgeException(String s){

super(s);

}

}

class TestCustomException1{

static void validate(int age)throws InvalidAgeException{

if(age<18)

throw new InvalidAgeException("not valid");

else

System.out.println("welcome to vote");

}

public static void main(String args[]){

try{

validate(13);

}catch(Exception m){System.out.println("Exception occured: "+m);}

System.out.println("rest of the code...");

}

}

[email protected]

Page 38: Exception Handling Lanjutan - Jurusan Informatikainformatika.unsyiah.ac.id/~viska/pjl/P7-1 Exception... · 2015-03-23 · 2 viska@unsyiah.ac.id. ... Contoh skenario unchecked exception

Exception propagationException propagation

[email protected]

Page 39: Exception Handling Lanjutan - Jurusan Informatikainformatika.unsyiah.ac.id/~viska/pjl/P7-1 Exception... · 2015-03-23 · 2 viska@unsyiah.ac.id. ... Contoh skenario unchecked exception

Exception propagation/‘merambat’

Setiap method yang menghasilkan exception akan disimpan dalam stack.

Isi stack pertama adalah tempat method dipanggil. Kemudian method berikutnya disimpan dalam stack, dst.

Sehingga exception akan merambat sesuai dengan Sehingga exception akan merambat sesuai dengan urutan pada stack dan bergantung pada bagian mana exception yang muncul dihandle.

Namun defaultnya checked exception tidak dirambatkan.

[email protected]

Page 40: Exception Handling Lanjutan - Jurusan Informatikainformatika.unsyiah.ac.id/~viska/pjl/P7-1 Exception... · 2015-03-23 · 2 viska@unsyiah.ac.id. ... Contoh skenario unchecked exception

Contohclass TestExceptionPropagation1{

void m(){

int data=50/0;

}

void n(){

m();

}

void p(){

try{

Pada contoh di atas, exception muncul di m() namun tidak dihandle. Sehingga merambat ke method n() namun belum dihandle juga. Maka merambat ke bawah lagi P() dimana exception

try{

n();

}catch(Exception e){System.out.println("exception handled");}

}

public static void main(String args[]){

TestExceptionPropagation1 obj=new TestExceptionPropagation1();

obj.p();

System.out.println("normal flow...");

}

}

[email protected]

ke bawah lagi P() dimana exception dihandle.

Page 41: Exception Handling Lanjutan - Jurusan Informatikainformatika.unsyiah.ac.id/~viska/pjl/P7-1 Exception... · 2015-03-23 · 2 viska@unsyiah.ac.id. ... Contoh skenario unchecked exception

Exception handling pada Exception handling pada overriding

[email protected]

Page 42: Exception Handling Lanjutan - Jurusan Informatikainformatika.unsyiah.ac.id/~viska/pjl/P7-1 Exception... · 2015-03-23 · 2 viska@unsyiah.ac.id. ... Contoh skenario unchecked exception

Ada aturan exception handling pada method overriding

Jika method pada superclass tidak mendeklarasi exception

Method yang di-override pada subclass TIDAK boleh mendeklarasi checked exception, tapi boleh mendeklarasi unchecked exception.

Jika method pada superclass mendeklarasi Jika method pada superclass mendeklarasi exception

Method yang di-override pada subclass boleh mendeklarasi exception yang sama, subclass exceptionnya atau tidak ada exception. Namun tidak boleh mendeklarasi parent exception.

[email protected]

Page 43: Exception Handling Lanjutan - Jurusan Informatikainformatika.unsyiah.ac.id/~viska/pjl/P7-1 Exception... · 2015-03-23 · 2 viska@unsyiah.ac.id. ... Contoh skenario unchecked exception

Contoh yg tidak boleh

[email protected]

Page 44: Exception Handling Lanjutan - Jurusan Informatikainformatika.unsyiah.ac.id/~viska/pjl/P7-1 Exception... · 2015-03-23 · 2 viska@unsyiah.ac.id. ... Contoh skenario unchecked exception

Kegunaan exception

Memisahkan code untuk menangani error dengan code yang biasa

Merambatkan error dalam stack

Mengelompokkan dan membedakan tipe error

[email protected]

Read more: http://docs.oracle.com/javase/tutorial/essential/exceptions/advantages.html