4. 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.
viska@unsyiah.ac.id4
5. Kegunaan assertion
Berguna untuk mendeteksi dan mengoreksi error
pemrograman.
Assertion utamanya digunakan untuk tujuan
pengujian.
viska@unsyiah.ac.id5
6. 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
viska@unsyiah.ac.id6
7. Contoh
import 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
viska@unsyiah.ac.id7
8. 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, NullPointerExceptionseperti: IllegalArgumentException, NullPointerException
etc.
Jangan gunakan assertion, jika anda tidak menginginkan
error pada situasi apapun.
viska@unsyiah.ac.id8
10. 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.
viska@unsyiah.ac.id10
11. What is exception handling?
Merupakan mekanisme untuk menangani error
runtime seperti ClassNotFound, IO, SQL, Remote
etc.
Kegunaannya:
Menjaga aliran normal dari program/aplikasi
viska@unsyiah.ac.id11
12. Skenario
Andai ada statement seperti di bawah:
statement 1;
statement 2;
statement 3;
statement 4;
statement 5;//exception occurs
statement 6;
statement 7;statement 7;
statement 8;
statement 9;
statement 10;
Jika exception muncul pada statement 5, maka
statement 6-10 tidak akan dijalankan.
Namun jika kita melakukan exception handling, maka
statement 6-10 bisa dijalankan.
viska@unsyiah.ac.id12
14. Tipe-tipe exception
Checked exception
Dicek saat kompilasi
Class yang extend Throwable (kecuali RuntimeException
dan 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 termasuk
unchecked exception, seperti ArithmeticException,
NullPointerException, ArrayIndexOutOfBoundsException
Error
Keadaan fatal yang terjadi
Contoh: OutOfMemoryError, VirtualMachineError,
AssertionError
viska@unsyiah.ac.id14
15. Contoh skenario unchecked exception
Pembagian dengan 0.
int a=50/0; //ArithmeticException
Jika variabel menyimpan null, dan variabel tadi
dipakai.
String s=null;
System.out.println(s.length());//NullPointerException
Kesalahan format number
String s="abc";
int i=Integer.parseInt(s);//NumberFormatException
Memasukkan data ke dalam indeks yang salah pada
array
int a[]=new int[5];
a[10]=50; //ArrayIndexOutOfBoundsException
viska@unsyiah.ac.id15
16. 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{}
viska@unsyiah.ac.id16
17. 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...");
}
}
viska@unsyiah.ac.id17
18. 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.
viska@unsyiah.ac.id18
19. 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(ArrayIndexOutOfBoundsExceptio
n e){System.out.println("task 2 complet
ed");}
catch(Exception e){System.out.println("c
ommon task completed");}
System.out.println("rest of the code...");
}
}
System.out.println("common task complete
d");}
catch(ArithmeticException e){
System.out.println("task1 is completed");}
catch(ArrayIndexOutOfBoundsExceptio
n e){System.out.println("task 2 completed"
);}
System.out.println("rest of the code...");
}
}
viska@unsyiah.ac.id19
20. 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..");
}
}
viska@unsyiah.ac.id20
21. 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.
viska@unsyiah.ac.id21