exception - gunadarma

28
EXCEPTION Exception Handling Penanganan Kesalahan

Upload: others

Post on 25-Nov-2021

14 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Exception - Gunadarma

EXCEPTION Exception Handling – Penanganan

Kesalahan

Page 2: Exception - Gunadarma

A Little Demo

public class Test {

public static void main(String[] args) {

int i = 6;

int j = 3;

System.out.println(i/j);

}

}

Output :

2

Page 3: Exception - Gunadarma

A Little Demo

public class Test {

public static void main(String[] args) {

int i = 6;

int j = 0;

System.out.println(i/j);

}

}

Output :

Exception in thread "main"

java.lang.ArithmeticException: / by zero

at Test.main(Test.java:4)

Page 4: Exception - Gunadarma

Exception Handling

• Eksepsi adalah keadaan tidak normal yang muncul pada

suatu bagian program pada saat dijalankan

• Penanganan eksepsi pada java membawa pengelolaan

kesalahan program saat dijalankan kedalam orientasi-

objek

• Eksepsi java adalah objek yang menjelaskan suatu

keadaan eksepsi yang muncul pada suatu bagian

program.

Page 5: Exception - Gunadarma

Exception Handling

• Suatu object Error khusus yang dibuat ketika terjadi suatu

kesalahan pada suatu program. Dengan exception

handling yang baik suatu program akan terhindar dari

”Hang”

• Exception dipicu oleh run time error dan digunakan

sebagai sarana melaporkan kondisi - kondisi kesalahan

Page 6: Exception - Gunadarma

Predefined Exceptions

Java Exception

Code to Cause It

NullPointerException

String s = null;

s.length();

ArithmeticException

int a = 3;

int b = 0;

int q = a/b;

ArrayIndexOutOfBoundsException

int[] a = new int[10];

a[10];

ClassCastException

Object x =

new Integer(1);

String s = (String) x;

StringIndexOutOfBoundsException

String s = "Hello";

s.charAt(5);

Page 7: Exception - Gunadarma

Jenis – Jenis Exception

• Exception merupakan objek dari subkelas yang

diturunkan dari kelas Throwable. Kelas Throwable ini

terdapat dalam package java.lang.object.

Throwable

Error Exception

RuntimeException ...

...

...

Object

Page 8: Exception - Gunadarma

Jenis – Jenis Exception

• Kelompok Kelas Error

Error ini bersifat fatal sehingga sistem tidak dapat

dimanipulasi untuk diperbaiki, contoh kelas: LinkageError,

VirtualMachineError, dan AWTError.

• Kelompok Kelas Exception

Jenis error ini masih dapat diantisipasi dengan

menyisipkan statement tambahan untuk mendeteksi data

yang berpotensi menimbulkan error.

Page 9: Exception - Gunadarma

Jenis – Jenis Exception

• Ada kelompok exception yang diperiksa oleh interpreter,

apakah akan ditangani atau dilempar, namun ada pula

exception yang akan tidak diperiksa interpreter.

• Disamping itu programmer dibolehkan membuat

exception sendiri dengan cara extends atau implements

kelas Exception

Page 10: Exception - Gunadarma

Tabel Checked Exception

Page 11: Exception - Gunadarma

Tabel Unchecked Exception

Page 12: Exception - Gunadarma

Tabel Unchecked Exception

• Dua Exception yang belum dikelompokkan, yaitu IOException dan

AWTException.

Page 13: Exception - Gunadarma

Exception Handling

• Try

• Catch

• Throw

• Throws

• Finally

Page 14: Exception - Gunadarma

Exception Handling

• Pada dasarnya try digunakan untuk mengeksekusi suatu

bagian program, dan jika muncul kesalahan, sistem akan

melakukan throw suatu eksepsi yang dapat anda catch

berdasarkan tipe eksepsinya, atau yang anda berikan

finally dengan penangan default.

Page 15: Exception - Gunadarma

Exception Handling

Berikut ini bentuk dasar bagian penanganan eksepsi :

try {

//pemanggilan method yg mungkin menghasilkan exception

//blok statement yg mungkin menghasilkan exception

}

catch(TipeException1 namaObjek) {

// penanganan salah-satu jenis exception

}

catch(TipeException2 namaObjek) {

// penanganan salah-satu jenis exception

}

catch(TipeExceptionN namaObjek) {

// penanganan salah-satu jenis exception

}

finally {

// blok yang harus dieksekusi

}

Page 16: Exception - Gunadarma

Exception Handling

try {

// Block of Code

}

catch (ExceptionType1 e) {

// Exception Handler for ExceptionType1

}

catch (ExceptionType2 e) {

// Exception Handler for ExceptionType2

throw (e); // re-throw the Exception

}

finally { }

Page 17: Exception - Gunadarma

Exception Handling

• Blok try tidak exception, maka blok catch tidak ada yang

dieksekusi dan segera blok finally yang dieksekusi.

• Jika terjadi exception pada blok try, maka salah satu blok

catch dieksekusi, kemudian blok finally dieksekusi.

Page 18: Exception - Gunadarma

Mekanisme Mengantisipasi Exception

Tiga kemungkinan skenario exception :

1. jika tidak terjadi exception (tidak ada blok catch yang

dieksekusi)

2. jika exception terjadi pada blok method tunggal (salah-

satu blok catch dieksekusi)

3. jika terjadi exception pada blok tersarang.

Page 19: Exception - Gunadarma

Mekanisme Mengantisipasi Exception

Page 20: Exception - Gunadarma

Try dan Catch

• Kata kunci try digunakan untuk menentukan suatu blok

program yang harus dijaga terhadap semua eksepsi

• Setelah blok try masukkan bagian catch, yang

menentukan tipe eksepsi yang akan ditangkap.

try {

//Blok yang akan ditangkap sekiranya terjadi

exception

}

catch(parameter)

//Blok yang akan dijalankan kalau terjadi

exception

}

Page 21: Exception - Gunadarma

Try dan Catch

class trycatch{

public static void main (String args[]) {

try {

int d = 0;

int a = 42 / d;

}

catch (ArithmeticException e) {

System.out.println( “Division By Zero” );

}

}

}

Page 22: Exception - Gunadarma

Throw

• Pernyataan throw digunakan untuk secara eksplisit

melemparkan suatu eksepsi.

• Pertama kita harus mendapatkan penanganan dalam

suatu instance throwable, melalui suatu parameter

kedalam bagian catch, atau dengan membuatnya

menggunakan operator new.

• Aliran eksekusi akan segera terhenti setelah pernyataan

throw, dan pernyataan selanjutnya tidak akan dicapai.

Page 23: Exception - Gunadarma

Throw

class throwDemo {

static void demoProc() {

try {

throw new NullPointerException( “demo” ); }

catch (NullPointerException e) {

System.out.println( “caught inside demoproc” );

throw e; }

}

public static void main (String args[]) {

try { demoProc(); }

catch (NullPointerException e) {

System.out.println( “recaught : “ + e); }

}

}

Page 24: Exception - Gunadarma

Throws

• Kata kunci throws digunakan untuk mengenali daftar

eksepsi yang mungkin di-throw oleh suatu method

• Jika tipe eksepsinya adalah error, atau RuntimeException,

atau suatu subclassnya, aturan ini tidak berlaku, karena

tidak diharapkan sebagai bagian normal dari kerja

program

Page 25: Exception - Gunadarma

Throws

class ThrowsDemo {

static void procedure () throws

IllegalAccessException {

System.out.println( “Inside Procedure” );

throw new IllegalAccessException( “demo” );

}

public static void main(String args[]) {

try { procedure(); }

catch (IllegalAccessException e) {

System.out.println( “caught “ + e); }

}

}

Page 26: Exception - Gunadarma

Finally

• Saat suatu eksepsi dilemparkan, alur program dalam

suatu method membuat jalur yang cenderung tidak linier

melalui method tersebut, melompati baris-baris tertentu,

bahkan mungkin akan keluar sebelum waktunya pada

kasus dimana tidak ada bagian catch yang cocok.

• Kadang-kadang perlu dipastikan bahwa bagian program

yang diberikan akan berjalan, tidak perduli eksepsi apa

yang terjadi dan ditangkap.

• Kata kunci finally dapat digunakan untuk menentukan

bagian program seperti itu.

Page 27: Exception - Gunadarma

Finally

class finallyDemo {

static void procA() {

try { System.out.println( “Inside procA..” );

throw new RuntimeException( “Demo” ); }

finally { System.out.println( “procA is finally”

); }

}

static void procB() {

try { System.out.println( “Inside procB..” );

return; }

finally { System.out.println( “procB is finally”

); }

}

Page 28: Exception - Gunadarma

Finally

public static void main(String args[]) {

try { procA( ); }

catch (Exception e){ };

procB(); }

}