exception handling - informatika.unsyiah.ac.idinformatika.unsyiah.ac.id/~viska/pbod3/11 exception...

21
Exception Handling Prepared by Viska Mutiawani 1 [email protected]

Upload: lyduong

Post on 19-Apr-2019

277 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Exception Handling - informatika.unsyiah.ac.idinformatika.unsyiah.ac.id/~viska/pbod3/11 Exception handling.pdf · Exception in thread "main" java.lang.AssertionError: Not valid 7

Exception Handling

Prepared by Viska Mutiawani

1 [email protected]

Page 2: Exception Handling - informatika.unsyiah.ac.idinformatika.unsyiah.ac.id/~viska/pbod3/11 Exception handling.pdf · Exception in thread "main" java.lang.AssertionError: Not valid 7

Konsep penting

Assertion

Exception handling: try-catch-finally

2 [email protected]

Page 3: Exception Handling - informatika.unsyiah.ac.idinformatika.unsyiah.ac.id/~viska/pbod3/11 Exception handling.pdf · Exception in thread "main" java.lang.AssertionError: Not valid 7

AssertionAssertion

[email protected]

Page 4: Exception Handling - informatika.unsyiah.ac.idinformatika.unsyiah.ac.id/~viska/pbod3/11 Exception handling.pdf · Exception in thread "main" java.lang.AssertionError: Not valid 7

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 - informatika.unsyiah.ac.idinformatika.unsyiah.ac.id/~viska/pbod3/11 Exception handling.pdf · Exception in thread "main" java.lang.AssertionError: Not valid 7

Kegunaan assertion

Berguna untuk mendeteksi dan mengoreksi error pemrograman.

Assertion utamanya digunakan untuk tujuan pengujian.

[email protected]

Page 6: Exception Handling - informatika.unsyiah.ac.idinformatika.unsyiah.ac.id/~viska/pbod3/11 Exception handling.pdf · Exception in thread "main" java.lang.AssertionError: Not valid 7

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 - informatika.unsyiah.ac.idinformatika.unsyiah.ac.id/~viska/pbod3/11 Exception handling.pdf · Exception in thread "main" java.lang.AssertionError: Not valid 7

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 - informatika.unsyiah.ac.idinformatika.unsyiah.ac.id/~viska/pbod3/11 Exception handling.pdf · Exception in thread "main" java.lang.AssertionError: Not valid 7

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 - informatika.unsyiah.ac.idinformatika.unsyiah.ac.id/~viska/pbod3/11 Exception handling.pdf · Exception in thread "main" java.lang.AssertionError: Not valid 7

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

[email protected]

Page 10: Exception Handling - informatika.unsyiah.ac.idinformatika.unsyiah.ac.id/~viska/pbod3/11 Exception handling.pdf · Exception in thread "main" java.lang.AssertionError: Not valid 7

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 - informatika.unsyiah.ac.idinformatika.unsyiah.ac.id/~viska/pbod3/11 Exception handling.pdf · Exception in thread "main" java.lang.AssertionError: Not valid 7

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 - informatika.unsyiah.ac.idinformatika.unsyiah.ac.id/~viska/pbod3/11 Exception handling.pdf · Exception in thread "main" java.lang.AssertionError: Not valid 7

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 - informatika.unsyiah.ac.idinformatika.unsyiah.ac.id/~viska/pbod3/11 Exception handling.pdf · Exception in thread "main" java.lang.AssertionError: Not valid 7

Hirarki class Exception

[email protected]

Page 14: Exception Handling - informatika.unsyiah.ac.idinformatika.unsyiah.ac.id/~viska/pbod3/11 Exception handling.pdf · Exception in thread "main" java.lang.AssertionError: Not valid 7

Tipe-tipe exception

Checked exception Dicek saat kompilasi

Class yang extend Throwable (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 - informatika.unsyiah.ac.idinformatika.unsyiah.ac.id/~viska/pbod3/11 Exception handling.pdf · Exception in thread "main" java.lang.AssertionError: Not valid 7

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 - informatika.unsyiah.ac.idinformatika.unsyiah.ac.id/~viska/pbod3/11 Exception handling.pdf · Exception in thread "main" java.lang.AssertionError: Not valid 7

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 - informatika.unsyiah.ac.idinformatika.unsyiah.ac.id/~viska/pbod3/11 Exception handling.pdf · Exception in thread "main" java.lang.AssertionError: Not valid 7

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 - informatika.unsyiah.ac.idinformatika.unsyiah.ac.id/~viska/pbod3/11 Exception handling.pdf · Exception in thread "main" java.lang.AssertionError: Not valid 7

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 - informatika.unsyiah.ac.idinformatika.unsyiah.ac.id/~viska/pbod3/11 Exception handling.pdf · Exception in thread "main" java.lang.AssertionError: Not valid 7

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 - informatika.unsyiah.ac.idinformatika.unsyiah.ac.id/~viska/pbod3/11 Exception handling.pdf · Exception in thread "main" java.lang.AssertionError: Not valid 7

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 - informatika.unsyiah.ac.idinformatika.unsyiah.ac.id/~viska/pbod3/11 Exception handling.pdf · Exception in thread "main" java.lang.AssertionError: Not valid 7

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]