Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

Exception Handling (Penanganan Error)

Presentasi serupa


Presentasi berjudul: "Exception Handling (Penanganan Error)"— Transcript presentasi:

1 Exception Handling (Penanganan Error)
As’ad Djamalilleil

2 Definisi Exception Exceptional Event  sebuah event yang terjadi pada waktu eksekusi dari sebuah program, dimana mengganggu alir normal dari instruksi program Ketika terjadi error dalam sebuah method, maka method akan membuat sebuah objek (exception object) yang berisi informasi tentang error tersebut

3 Contoh exception User memasukkan data yang tidak tepat, misalnya: data angka yang diinginkan tapi huruf yang dimasukkan Sebuah file yang akan dibuka tidak ditemukan Koneksi jaringan yang putus ditengah komunikasi yang sedang berlangsung Dan lain-lain

4 Exception Handler Throwing exception  membuat sebuah objek exception dan mengirimnya ke sistem runtime Exception handler  sebuah blok yang berisi kode program untuk menangani exception Catching exception  Blok yang terpilih untuk menangani jenis exception itu bertugas menangkap exception

5 3 macam exception Checked exception Error (eksternal)
Membaca file menggunakan class java.io.FileReader namun file tidak ditemukan sehingga memicu exception java.io.FileNotFoundException Error (eksternal) Kerusakan file pada saat pembacaan akan memicu exception java.io.IOError Runtime exception (internal) Exception yang diakibatkan oleh masalah internal seperti kesalahan logika atau yang diistilahkan dengan bug

6 Hirarki Exception Semua class exception merupakan turunan dari class java.lang.Exception Class Exception memiliki 2 sub-class, yaitu class IOException dan RuntimeException

7 Checked Exception Exception Keterangan ClassNotFoundException
Class tidak ditemukan CloneNotSupportedException Mencoba untuk menggandakan objek yang tidak mengimplementasi interface Cloneable IllegalAccessException Akses ke sebuah class ditolak InstantiationException Mencoba untuk membuat objek dari class abstract atau interface InterruptedException Sebuah thread telah diinterupsi oleh thread lain NoSuchFieldException Field yang akan diakses tidak ditemukan NoSuchMethodException Method yang dipanggil tidak ditemukan

8 Unchecked RuntimeException
Keterangan ArithmeticException Kesalahan perhitungan aritmatik, misalnya divide-by-zero ArrayIndexOutOfBoundsException Kesalahan karena mengakses index array diluar batas jumlah elemen yang tersedia ArrayStoreException Memberikan nilai ke elemen array dengan tipe yang tidak sesuai ClassCastException Casting data yang tidak benar IllegalArgumentException Penggunaan argumen yang tidak tepat dalam pemanggilan method IllegalMonitorStateException Monitoring operasi yang tidak tepat, misalnya menunggu thread yang tidak terkunci IllegalStateException Aplikasi berada dalam status yang tidak tepat IllegalThreadStateException Operasi yang diminta tidak sesuai dengan status thread IndexOutOfBoundsException Beberapa tipe index array berada di luar batas NegativeArraySizeException Array dibuat dengan jumlah elemen negatif

9 Exception Keterangan NullPointerException Kesalahan pada penggunaan nilai null NumberFormatException Kesalahan konversi dari format string ke numerik SecurityException Percobaan pelanggaran keamanan StringIndexOutOfBounds Mencoba mengakses index string di luar panjang string yang tersedia UnsupportedOperationException Ditemukan operasi yang tidak dapat dilakukan

10 Catching Exception Sebuah method menangkap exception menggunakan kombinasi keyword try dan catch Blok try/catch digunakan pada kode program yang memungkinkan untuk terjadinya sebuah exception

11 Sintaks Exception try { } catch(TipeException e) { Pada statement catch juga dideklarasikan tipe dari exception yang ingin ditangkap. Bila terjadi exception di dalam blok try, blok catch akan diperiksa. Bila tipe dari exception ada di dalam blok catch, maka exception akan diteruskan ke blok catch tersebut.

12 Exception Method Method Keterangan public String getMessage( )
Memberikan pesan detail tentang exception yang terjadi public Throwable getCause( ) Menampilkan penyebab dari terjadinya exception public String toString( ) Memberikan nama class dan disambung dengan hasil dari method getMessage( ) public void printStackTrace( ) Mencetak hasil dari method toString( ) bersama dengan stack trace ke System.err, output stream dari error yang terjadi public StackTraceElement [ ] getStackTrace( ) Memberikan array yang berisi setiap elemen pada stack trace. Elemen ke-0 berisi call stack teratas, sedangkan elemen terakhir mewakili method paling bawah dari call stack public Throwable fillInStackTrace( ) Berisi stack trace dari objek Throwable, dimana stack trace saat ini ditambah dengan informasi sebelumnya dari stack trace

13 Contoh 1 import java.io.*; public class CobaSaja{
public static void main(String args[]){ try { int a[] = new int[2]; System.out.println("Elemen ketiga :" + a[3]); } catch(ArrayIndexOutOfBoundsException e) { System.out.println("Exception yg dilempar :" + e); System.out.println("Keluar blok try/catch");

14 Multiple Catch Block try { } catch(TipeException1 e1){

15 Jika terjadi exception, maka exception akan dilempar ke blok catch pertama.
Bila tipenya cocok dengan exception yang dilempar, maka akan ditangkap di blok catch tersebut, namun bila tidak cocok maka akan diteruskan ke blok catch berikutnya Dan seterusnya

16 Contoh 2 try { file = new FileInputStream(namaFile);
x = (byte) file.read(); } catch(FileNotFoundException f) { f.printStackTrace(); return -1; catch(IOException i) { i.printStackTrace();

17 Keyword throws dan throw
Ada beberapa method yang mengharuskan aplikasi untuk dapat menangani exception Bila sebuah method tidak kita inginkan untuk menangani exception, method tersebut harus dideklarasikan dengan menggunakan keyword throws pada akhir kepala method Exception dapat dilempar menggunakan keyword throw

18 Contoh 3.a import java.io.*; public class Coba{
public static void main(String[] args){ DataInputStream dis = new DataInputStream(System.in); String s = dis.readLine(); // IOException harus ditangkap int a = 0; try{ a = Integer.parseInt(s); }catch(NumberFormatException e){} System.out.println(a); }

19 Contoh 3.b import java.io.*; public class Coba{
public static void main(String[] args)throws IOException{ DataInputStream dis = new DataInputStream(System.in); String s = dis.readLine(); // IOException harus ditangkap int a = 0; try{ a = Integer.parseInt(s); }catch(NumberFormatException e){} System.out.println(a); }

20 Contoh 4 import java.io.*; public class Coba{
public static void main(String[] args)throws Exception{ DataInputStream dis = new DataInputStream(System.in); System.out.print("Input tanggal:"); try{ int tgl = Integer.parseInt(dis.readLine()); if(tgl<1 || tgl>31) throw new Exception("Tanggal tdk benar!"); }catch(NumberFormatException e){ System.out.println("Nilai yg diinput bukan angka!"); }catch(IOException e){ System.out.println("Kesalan penginputan!"); }

21 Keyword finally Keyword finally digunakan untuk membuat sebuah blok yang mengikuti blok try Kode program di dalam blok finally selalu dieksekusi, pada saat exception terjadi atau tidak Penggunaan blok finally memungkinkan kita untuk menjalankan pernyataan cleanup yang ingin dieksekusi, dalam kondisi apapun

22 Sintaks Finally try { } catch(TipeException e) { finally {

23 Contoh 5 import java.io.*; public class Coba{
public static void main(String args[]){ int a[] = new int[2]; try { System.out.println("Elemen ketiga :" + a[3]); } catch(ArrayIndexOutOfBoundsException e) { System.out.println("Exception yg dilempar :" + e); finally{ a[0] = 6; System.out.println("Elemen pertama: " + a[0]);

24 Membuat Class Exception
Kita dapat membuat class exception kita sendiri di Java. Beberapa poin yang perlu diingat adalah sbb: Semua exception harus merupakan sub-class dari Throwable Bila ingin membuat sebuah checked exception, maka kita harus menurunkan dari class Exception Bila ingin membuat sebuah class runtime exception, maka kita harus menurunkan dari class RuntimeException

25 Sintaksnya class MyException extends Exception { }

26 Contoh 6.a // Nama file InsufficientFundsException.java
import java.io.*; public class InsufficientFundsException extends Exception { private double amount; public InsufficientFundsException(double amount) this.amount = amount; } public double getAmount() return amount;

27 Contoh 6.b // Nama file CheckingAccount.java import java.io.*;
public class CheckingAccount { private double balance; private int number; public CheckingAccount(int number) this.number = number; } public void deposit(double amount) balance += amount; public void withdraw(double amount) throws InsufficientFundsException if(amount <= balance) balance -= amount; else double needs = amount - balance; throw new InsufficientFundsException(needs); public double getBalance() return balance; public int getNumber() return number;

28 Contoh 6.c // Nama file BankDemo.java public class BankDemo {
public static void main(String [] args) CheckingAccount c = new CheckingAccount(101); System.out.println("Depositing $500..."); c.deposit(500.00); try System.out.println("\nWithdrawing $100..."); c.withdraw(100.00); System.out.println("\nWithdrawing $600..."); c.withdraw(600.00); }catch(InsufficientFundsException e) System.out.println("Sorry, but you are short $" + e.getAmount()); e.printStackTrace(); }


Download ppt "Exception Handling (Penanganan Error)"

Presentasi serupa


Iklan oleh Google