Exception Handling
Prepared by Viska Mutiawani
1 viska@unsyiah.ac.id
Konsep penting
 Assertion
 Exception handling: try-catch-finally
2 viska@unsyiah.ac.id
AssertionAssertion
viska@unsyiah.ac.id3
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
Kegunaan assertion
 Berguna untuk mendeteksi dan mengoreksi error
pemrograman.
 Assertion utamanya digunakan untuk tujuan
pengujian.
viska@unsyiah.ac.id5
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
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
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
Exception handling: Try-catch-Exception handling: Try-catch-
finally
viska@unsyiah.ac.id9
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
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
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
Hirarki class Exception
viska@unsyiah.ac.id13
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
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
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
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
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
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
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
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

1 exception handling

  • 1.
    Exception Handling Prepared byViska Mutiawani 1 viska@unsyiah.ac.id
  • 2.
    Konsep penting  Assertion Exception handling: try-catch-finally 2 viska@unsyiah.ac.id
  • 3.
  • 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  Bergunauntuk mendeteksi dan mengoreksi error pemrograman.  Assertion utamanya digunakan untuk tujuan pengujian. viska@unsyiah.ac.id5
  • 6.
    Syntax assertion  Ada2 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{ publicstatic 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 menggunakanassertion  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
  • 9.
    Exception handling: Try-catch-Exceptionhandling: Try-catch- finally viska@unsyiah.ac.id9
  • 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 exceptionhandling?  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 adastatement 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
  • 13.
  • 14.
    Tipe-tipe exception  Checkedexception  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 uncheckedexception  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 dengantry-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 classTesttrycatch2{ 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  Jikaanda 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? publicclass 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  Tryjuga 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  Digunakanuntuk 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