EXCEPTION HANDLING. Bug : kesalahan yang merupakan kelemahan dari perancangan atau implementasi

dokumen-dokumen yang mirip
Paket dan Interface. 15 th week Estu Sinduningrum ST,MT

public class Test { int i = 6; int j = 3; System.out.println(i/j); } Output :

Pemrograman Berorientasi Object

Percobaan 6 Exception

PRAKTIKUM 6 EXCEPTION

PERCOBAAN 6 EXCEPTION

PRAKTIKUM 17 MENANGANI EXCEPTION

FAKULTAS TEKNIK UNIVERSITAS NEGERI YOGYAKARTA LAB SHEET PEMROGRAMAN 2

Penjebakan Eksepsi. Nur hasanah, M.Cs

Modul 4 Exception, I/O, dan Operasi File

Definisi Eksepsi (exception)

Exception adalah penanda bahwa kondisi/kejadian yang tidak diinginkan telah terjadi pada program kita. Ada 2 jenis exception (+1 Error):

Exception Handling. Oleh : Agus Priyanto, M.Kom

PERTEMUAN III OBJEK DAN CLASS TUJUAN PRAKTIKUM

Tujuan Intruksional. Mampu menjelaskan tentang event handling Mampu menjelaskan tentang method Mampu menggunakan event handling Mampu membuat method

Pemrograman Berorientasi Obyek. Exception Handling. Politeknik Elektronika Negeri Surabaya

Pemrograman Berorientasi. Exception Handling

Topik. Penanganan Eksepsi. Menangkap Eksepsi. Catch Secara bertingkat. Melontarkan Eksepsi. Melontarkan kembali Eksepsi.

A. TUJUAN PEMBELAJARAN 1. Mengetahui cara menangani exception dengan cara melempar exception. 2. Mengetahui cara membuat sendiri class exception.

Pemrograman Lanjut Exception Handling PTIIK

MODUL 9 EXCEPTION HANDLING

Exception Handling. Topik

Bahasa Pemrograman 2.

Praktikum 9 Exception Handling

Penanganan Kesalahan

Exception. Oleh: Mike Yuliana PENS-ITS

Sesi 8. Event Handling & Exception Handling. Tujuan Intruksional

EXCEPTION HANDLING. 1. Mampu menangani eksepsi 2. Mengetahui dan memahami tentang multithreading 3. Dapat membuat program tentang exception handling

Pemrograman Berbasis Objek. Exception Handling. Politeknik Elektronika Negeri Surabaya

BAB Tujuan. 2.2 Apa itu Exception? Pendahuluan Error dan Exception Classes

IF PEMROGRAMAN LANJUT EXCEPTION. Oleh : Andri Heryandi, M.T.

IKG2I4 / Software Project I

PERTEMUAN 3 OBJEK DAN CLASS

Praktikum Exception Handling

PEMROGRAMAN JAVA : EXCEPTION

//PROGRAM 9-8. int[] A = new int[5]; // SALAH, karena tidak terdapat. class BanyakEksepsi { indeks ke-5. public static void test(int a, int b) { try {

Exception Handling. Prepared by Viska Mutiawani. 1

PENANGANAN EKSEPSI. class Exc0 { public static void main (String args[]) { int d = 0; int a = 42 / d; } }

4/11/2013. Topik. Exceptions dan Assertions Pengenalan Pemrograman 2. Topik. Topik EXCEPTIONS. Class Error dan Exception

03/04/2018. Pemrograman Berorientasi Object

Paket dan Interface. 15 th week Estu Sinduningrum ST,MT

MODUL 7 - EXCEPTION HANDLING

Pemograman Java. Yoannita, S.Kom. Argumen Command Line Exception Handling Package

PEMOGRAMAN JAVA. Yoannita. Tipe Data (ii) : Array Exception Handling

EXCEPTION. 2. Pada kondisi bagaimana klausa finally tidak akan dieksekusi? Kode didalam block try memiliki statement return

Exception Handling and Multithreading

Menangkap Kesalahan (Error Handling)

Variabel tersebut seharusnya bisa dideklarasikan didalam try block dan block catch

Abstract Class dan Interface. Viska Mutiawani, M.Sc

Waktu Sisa : 0:43:4. Sukses. Kesalahan pada URL. File tidak lengkap. Kesalahan umum. Mengerjakan finally. Diluar block

1. Apa yang harus dilakukan oleh programmer untuk menangani user-defined exception? Menuliskan exception sebagai start method

Sukses. Kesalahan pada URL. File tidak lengkap. Kesalahan umum

2. Pilih instruksi yang dapat digunakan dalam method actionperformed untuk membedakan antara tombol buttonone dan buttontwo.

1.Tujuan. 2. Latar Belakang

PRAKTIKUM I EXCEPTION HANDLING

Obyektif : KONTROL ALUR PROGRAM

Tidak ada satupun dari pilihan di atas yang benar karena checked exception tidak bisa ditulis

PRAKTIKUM PEMROGRAMAN OBJEK DENGAN JAVA MODUL KE-5 EXCEPTION HANDLING

Exception Handling Lanjutan

PEMAHAMAN DASAR DASAR JAVA

PEMROGRAMAN JAVA. Petunjuk Penulisan Program Token Aturan Penamaan Identifier Lingkungan /Scope dari variabel Tipe Data (i) Yoannita

Pemrograman. Pertemuan-3 Fery Updi,M.Kom

Percabangan & Perulangan

BAB II VARIABEL DAN TIPE DATA

2 TIPE DATA DAN VARIABEL

SUMBER BELAJAR PENUNJANG PLPG

Pertemuan 4 Array pada Java

Pertemuan 2 (2) : Membuat Class dan mengakses Anggota Class

PENYELEKSIAN /PERCABANGAN & PERULANGAN Part II. 5 th week Estu Sinduningrum ST,MT

MATERI PRAKTIKUM 2 ARRAY

PEMROGRAMAN JAVA : VARIABEL DAN TIPE DATA

PERTEMUAN 2 ARRAY, PERCABANGAN, DAN PERULANGAN

Cara Membaca File Text di JAVA

IT652 Pemrograman Berorientasi Aspek. Ramos Somya

Membuat dan Menggunakan Class

Algoritma Pemrograman 1

PERTEMUAN II ARRAY, PERCABANGAN, DAN PERULANGAN TUJUAN PRAKTIKUM

Struktur Kontrol Pemrograman Java : PERCABANGAN

OPERASI FILE & EXCEPTION HANDLING. Herman Tolle

BAB 8 Argumen dari Command-line

Algoritma dan Pemrograman FUNGSI

1. Mana diantara pilihan-pilihan berikut ini yang merupakan penulisan loop yang benar?

PEMROGRAMAN BERORIENTASI OBJEK

IT210 Pemrograman Visual. Ramos Somya

Dasar Pemrograman Java

Pemrograman Berorientasi Objek 2

SEKOLAH TINGGI MANAJEMEN INFORMATIKA & KOMPUTER JAKARTA STI&K SATUAN ACARA PERKULIAHAN

PERTEMUAN 2 ARRAY, PERCABANGAN, DAN PERULANGAN

LAB PEMROGRAMAN I (JAVA FUNDAMENTAL) PERTEMUAN 3 Dosen : Bella Hardiyana S. Kom

Array. Pengantar. int a, b, c, d, e;

PEMROGRAMAN BERORIENTASI OBJEK

BAB 3 TYPE DATA, VARIABLE DAN OPERATOR

Variabel dengan tipe dasar hanya dapat menyimpan sebuah nilai

PEMROGRAMAN JAVA. Yoannita, S.Kom. Input Kondisi (IF-ELSE, SWITCH)

Input Nilai tanpa Case String di Java

Pemrograman Berorientasi. Class dan Obyek 2

Encapsulation (Encapsulasi) Minggu 5 Pemrograman Berorientasi Objek Alfa Faridh Suni

BAB VI ARRAY Mendeklarasikan Variabel Array int[ ] bilangan; int bilangan[ ]; Mendefinisikan Array Bilangan = new int[5]; Latihan 21. ArrSatu.

I. Tujuan Instruksional Umum Mengenal konsep dasar berorientasi objek Memahami dan dapat mengimplementasikan Kelas dan Objek pada java.

Objek Data, Variabel, dan Konstanta. Konsep Bahasa Pemrograman Materi 4 Yudianto Sujana, M.Kom

Transkripsi:

EXCEPTION HANDLING Exception Handling dapat dianggap sebagai Struktur Kendali Non-Lokal Bug : kesalahan yang merupakan kelemahan dari perancangan atau implementasi Exception : kesalahan yang dihasilkan oleh kondisi sistem /lingkungan kondisi abnormal (sesuatu diluar yang biasanya) yang muncul di sekuen (urutan) kode saat jalan run-time error Exception menyediakan pembangkitan kesalahan serta cara menanganinya. Struktur kendali ini memungkinkan kita menspesifikasikan dimana kita dapat menangani suatu tipe kesalahan secara pasti. Exception menyediakan sarana mengkomunikasikan informasi kesalahan lewat suatu rantai metode, sampai terdapat satu metode yang menanganinya. Exception di Java merupakan subkelas dari kelas java.lang.throwable. Exception adalah objek, maka memiliki data dan metode. KATA KUNCI untuk Exception Handling : a) try b) catch c) throw d) throws e) finally Ringkasan kerja : 1. program yang hendak dimonitor untuk exceptionnya dimuat dalam try 2. jika exception terjadi didalam blok try, exception itu dilemparkan 3. kode dapat menangkap (catch) exception menggunakan catch dan menangani dengan suatu cara yang rasional 4. exception yang dibangkitkan sistem secara otomatis dilempar oleh sistem Java, sedangkan untuk exception yang dilemparkan secara manual maka digunakan keyword throw. 5. exception yang dilempar oleh metode harus di spesifikasikan dengan klausa throws. 6. Sembarang kode yang secara absolut harus dieksekusi sebelum metode keluar diletakkan di blok finally. JENIS EKSEPSI Exception dapat dibangkitkan oleh Java run-time system atau dibangitkan secara manual oleh kode program : A. Exception yang dilempar Java run-time system berhubungan dengan kesalahankesalahan fundamental yang melanggar aturan-aturan bahasa Java atau batasan-batasan lingkungan eksekusi Java B. Exception yang dihasilkan secara manual, umunya digunakan untuk melaporkan kondisi kesalahan ke pemanggil metode 1

EXCEPTION TIDAK TERTANGKAP public class DivByZeroToy /** Creates a new instance of DivByZeroToy */ public DivByZeroToy() public static void main (String args[]) int zeroint = 0; int anint = 10; int divresult = anint / zeroint; java.lang.arithmeticexception: / by zero at DivByZeroToy.main(DivByZeroToy.java:10) Exception in thread "main" Tahap-tahap kejadian : 1. ketika sistem Java mendeteksi usaha membagi dengan nol, maka sistem membangun objek Exeption baru, dan kemudian melemparkan Exception. 2. aksi ini menyebabkan eksekusi DivByZeroToy berhenti, karena begitu satu Exception dileparkan, maka Exception harus ditangkap oleh penanganan Exception yang harus segera menanganinya. 3. karena tidak ada penanganan Exception, maka Exception ditangkap oleh penanganan sistem Java. sembarang Exception yang tidak ditangkap oleh kode program akan ditangkap oleh penanganan default. penanganan Exception menampilkan String yang mendeskripsikan Exception mencetak jejak stack dari saat dimana Exception terjadi mengakhiri program try dan catch Untuk menanggapi exception, pemanggilan terhadap metode yang menghasilkan Exception harus ditempatkan di dalam blok try. blok try adalah blok kode yang dimulai kata kunci try diapit pasangan kurung kurawal. setiap blok try diasosiasikan dengan satu blok catch atau lebih. Jika metode dimaksudkan untuk menangkap Exception yang dilempar oleh metode yang dipanggil, maka pemanggilan harus ditempatkan di blok try. blok-blok catch menangani tipe exception berbeda yang dilempar. Kalimat try dan catch membentuk satu unit. blok catch tidak dapat menangkap Exception yang dilempar kalimat try yang lain tujuan dari klausa catch seharusnya mampu menyelesaikan kondisi kekecualian dan kemudian melanjutkan seolah-olah kesalahan tidak pernah terjadi. Manfaat penanganan Exception sendiri : memungkinkan untuk peniadaan kesalahan mencegah program dihentikan oleh system Java secara otomatis dapat memberikan tambahan informasi yang berguna untuk pemakai aplikasi atau untuk kegiatan debugging 2

Metode dapat mempunyai blok untuk menangkap beberapa tipe Exception sekaligus. Java mendukung banyak blok catch. masing-masing blok catch harus menspesifikasikan tipe Exception yang berbeda. public class BanyakCatch public BanyakCatch() public static void main(string args[]) int anint = 10; try int divby = args.length; int divresult = anint / divby; System.out.println("Hasilnya adalah : " + divresult); int c[]=1; c[10]=100; catch (ArithmeticException e) System.out.println("Terjadi pembagian dengan nol"); System.out.println("Diatasi blok penanganan A"); catch (ArrayIndexOutOfBoundsException e) System.out.println("Terjadi Indeks Array diluar batas"); System.out.println("Diatasi blok penanganan B"); System.out.println("Kalimat Setelah Catch"); Terjadi pembagian dengan nol Diatasi blok penanganan A Kalimat Setelah Catch 3

finally Java menyediakan klausa finally untuk menandai blok itu selalu dieksekusi. Pada situasi normal (tidak ada Exception yang dilempar), blok finally di eksekusi segera setelah blok try. Ketika Exception dilempar, blok finally dieksekusi setelah blok catch yang menangani Exception dilakukan. public class BanyakCatch2 public BanyakCatch2() public static void main(string args[]) int anint = 10; try int divby = args.length; int divresult = anint / divby; System.out.println("Hasilnya adalah : " + divresult); int c[]=1; c[10]=100; catch (ArithmeticException e) System.out.println("Terjadi pembagian dengan nol"); System.out.println("Diatasi blok penanganan A"); catch (ArrayIndexOutOfBoundsException e) System.out.println("Terjadi Indeks Array diluar batas"); System.out.println("Diatasi blok penanganan B"); finally System.out.println("FINALLY"); Terjadi pembagian dengan nol Diatasi blok penanganan A FINALLY 4

Java Built-in Exception Java mendefinisikan beberapa Exception yang akan dilempar sistem Java secara otomatis. Exception ini tidak usah didaftarkan di daftar Exception di klausa throws. kebanyakan Exception ini adalah subkelas RuntimeException. di Java, Exception- exception ini disebut sebagai Unchecked Exception (Exception yang tidak diperiksa), karena kompilator Java tidak memeriksa apakah metode menangani atau melempar Exception ini. Hirarki Exception yang terdapat di java.lang : OBJECT Throwable Exception sub kelas dari Throwable Superkelas dari dari semua Exception ClassNotFoundException CloneNotSupportedException IllegalAccessException InstantiationException InterruptedException NoSuchMethodException NoSuchFieldException RunTimeException 1. ArithmeticException (U) 2. ArrayStoreException (U) 3. ClassCastException (U) 4. IllegalArgumentException (U) a) IllegalThreadStateException (U) b) NumberFormatException (U) 5. IllegalStateException (U) 6. IllegalMonitorStateException (U) 7. IndexoutOfBoundsException (U) c) ArrayIndexoutOfBoundsException (U) d) StringIndexoutOfBoundsException (U) 8. NegativeArraySizeException (U) 9. NullPointerException (U) 10. SecurityException (U) Keterangan : U = Unchecked Exception 5

throw & throws a. throw kata kunci throw digunakan di program untuk melempar (throw) terhadap Exception secara eksplisit. throw ThrowableInstance ThrowableInstance harus merupakan objek dengan tipe Throwable atau subkelas dari Throwable. terdapat dua cara kita memperoleh objek Throwable : 1. menggunakan parameter di klausa catch 2. menciptakan salah satu dengan menggunakan operator new Eksekusi program akan dihentikan segera setelah kalimat throw kalimat-kalimat setelah kalimat throw tidak dieksekusi Java akan melakukan inspeksi blok try terdekat untuk menemukan kalimat catch yang cocok dengan tipe Exception yang dilempar jika Java menemukannya, maka kendali program ditransfer ke kalimat catch itu jika tidak ditemukan, maka Java akan melakukan penelusuran ke blok try berikutnya sampai ke puncak stack dan bila tetap tidak ditemukan, maka penanganan Exception secara default akan melaksanakan tugasnya : a. menghentikan program b. mencetak jejak penelusuran stack public class ThrowToy public ThrowToy() static void throwexception() throws Exception try throw new Exception("Demo terhadap kalimat throw"); catch (Exception e) System.out.println("Penangkapan exception di test"); throw e; // Exception kembali dilemparkan static void test() try throwexception(); catch (Exception e) //menangkap exception System.out.println("Kembali ditangkap exception: " + e); public static void main (String args[]) test(); Penangkapan exception di test Kembali ditangkap exception: java.lang.exception: Demo terhadap kalimat 6

b. throws Klausa Throws mendaftarkan tipe-tipe Exception yang dapat dilempar metode hal ini diperlukan agar diketahui semua Exception yang mungkin dilempar metode atau subkelassubkelasnya semua Exception yang hendak dilempar metode harus dideklarasikan di klausa throws jika metode melemparkan Exception yang tidak didelarasikan di deklarasi metode, maka kompilator akan memberikan pesan kesalahan. <method-modifier> type method-name throws exception-list //badan metode exception-list adalah daftar exception yang dipisahkan dengan koma, yang berisi daftar Exception yang dapat dilempar metode public class ThrowsToy public ThrowsToy() static void throwsexception() throws IllegalAccessException System.out.println("Di dalam throwsexception."); throw new IllegalAccessException("Exception di throwsexception"); public static void main (String args[]) try throwsexception(); catch (IllegalAccessException e) //menangkap exception System.out.println("Ditangkap exception: " + e); Di dalam throwsexception. Ditangkap exception: java.lang.illegalaccessexception: Exception di throwsexception di dalam metode main() harus didefinisikan kalimat try / catch yang menangkap Exception yang dikirim metode throwsexception. bila kita tidak mendefinisikan, maka kompilator akan menyatakan terdapat kesalahan dengan menggunakan throws di deklarasi metode dan throw di dalam metode untuk melemparkan Exception yang muncul di metode, maka kita akan dapat memaksakan metode pemanggil untuk menangani Exception yang dilemparkan padanya. 7

public class ThermometerNextNextToy private double valueincelcius; /** Creates a new instance of ThermometerSmartToy */ public ThermometerNextNextToy() valueincelcius = 0; public ThermometerNextNextToy(double newvalue) throws Exception valueincelcius = newvalue; if (valueincelcius < -272.0) Exception E = new Exception("Tidak boleh kurang dari -272 Derajat Celcius"); throw (E); // Accessing operations public void setincelcius (double newvalue) throws Exception valueincelcius = newvalue; if (valueincelcius < -272.0) Exception E = new Exception("Tidak boleh kurang dari -272 Derajat Celcius"); throw (E); public void setinreamur (double newvalue) throws Exception valueincelcius = (5/4) * newvalue; if (valueincelcius < -272.0) Exception E = new Exception("Tidak boleh kurang dari -272 Derajat Celcius"); throw (E); public void setinfahrenheit (double newvalue) throws Exception valueincelcius = (5/9) * (newvalue - 32); if (valueincelcius < -272.0) Exception E = new Exception("Tidak boleh kurang dari -272 Derajat Celcius"); throw (E); public void setinkelvin (double newvalue) throws Exception valueincelcius = newvalue - 272; if (valueincelcius < -272.0) Exception E = new Exception("Tidak boleh kurang dari -272 Derajat Celcius"); throw (E); public double getincelcius () return valueincelcius; public double getinreamur () return ((4/5) * valueincelcius); 8

public double getinfahrenheit () return (((9/5) * valueincelcius) + 32); public double getinkelvin () return (valueincelcius + 272); static void test() ThermometerNextNextToy t; =="); System.out.println("Pengujian"); System.out.println("Aplikasi Thermometer"); System.out.println("Nilai Celcius Yang Dimasukkan adalah 50"); System.out.println("Dengan Penanganan Kondisi Pemasukan Nilai Tak Absah"); System.out.println("Memanfaatkan Structured Exception Handling"); System.out.println("================================================= try t = new ThermometerNextNextToy(0.0); System.out.println("Nilai di Celcius : "+t.getincelcius()); System.out.println("Nilai di Reamur : "+t.getinreamur()); System.out.println("Nilai di Fahrenheit : "+t.getinfahrenheit()); System.out.println("Nilai di Kelvin : "+t.getinkelvin()); try t.setincelcius(50.0); System.out.println("Nilai di Celcius : "+t.getincelcius()); System.out.println("Nilai di Reamur : "+t.getinreamur()); System.out.println("Nilai di Fahrenheit : "+t.getinfahrenheit()); System.out.println("Nilai di Kelvin : "+t.getinkelvin()); catch (Exception e) System.out.println ("Exception : " + e.getmessage()); try t.setincelcius(-273.0); System.out.println("Nilai di Celcius : "+t.getincelcius()); System.out.println("Nilai di Reamur : "+t.getinreamur()); System.out.println("Nilai di Fahrenheit : "+t.getinfahrenheit()); System.out.println("Nilai di Kelvin : "+t.getinkelvin()); catch (Exception e) System.out.println ("Exception : " + e.getmessage()); catch (Exception e) System.out.println ("Exception : " + e.getmessage()); 9

public static void main(string[] args) test(); Pengujian Aplikasi Thermometer Nilai Celcius Yang Dimasukkan adalah 50 Dengan Penanganan Kondisi Pemasukan Nilai Tak Absah Memanfaatkan Structured Exception Handling =================================================== Nilai di Celcius : 0.0 Nilai di Reamur : 0.0 Nilai di Fahrenheit : 32.0 Nilai di Kelvin : 272.0 Nilai di Celcius : 50.0 Nilai di Reamur : 0.0 Nilai di Fahrenheit : 82.0 Nilai di Kelvin : 322.0 Exception : Tidak boleh kurang dari -272 Derajat Celcius 10