Exception Handling Lanjutan

dokumen-dokumen yang mirip
Exception Handling. Prepared by Viska Mutiawani. 1

Percobaan 6 Exception

PERCOBAAN 6 EXCEPTION

PRAKTIKUM 6 EXCEPTION

PRAKTIKUM 17 MENANGANI EXCEPTION

Exception Handling. Topik

Pemrograman Berbasis Objek. Exception Handling. Politeknik Elektronika Negeri Surabaya

Pemrograman Berorientasi Obyek. Exception Handling. Politeknik Elektronika Negeri Surabaya

Sesi 8. Event Handling & Exception Handling. Tujuan Intruksional

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

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

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

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

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

03/04/2018. Pemrograman Berorientasi Object

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

Exception Handling. Oleh : Agus Priyanto, M.Kom

Pemrograman Berorientasi Object

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

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

Pemrograman Lanjut Exception Handling PTIIK

Variabel tersebut seharusnya bisa dideklarasikan didalam try block dan block catch

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

Definisi Eksepsi (exception)

Exception. Oleh: Mike Yuliana PENS-ITS

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

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

Modul 4 Exception, I/O, dan Operasi File

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

Penanganan Kesalahan

1.Tujuan. 2. Latar Belakang

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

IKG2I4 / Software Project I

Bahasa Pemrograman 2.

Pemrograman Berorientasi. Exception Handling

PRAKTIKUM I EXCEPTION HANDLING

Praktikum 9 Exception Handling

PRAKTIKUM PEMROGRAMAN OBJEK DENGAN JAVA MODUL KE-5 EXCEPTION HANDLING

MODUL 7 - EXCEPTION HANDLING

MODUL 9 EXCEPTION HANDLING

PERTEMUAN 3 OBJEK DAN CLASS

PEMROGRAMAN JAVA : EXCEPTION

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

Abstract Class dan Interface. Viska Mutiawani, M.Sc

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

Praktikum Exception Handling

Penjebakan Eksepsi. Nur hasanah, M.Cs

PERTEMUAN III OBJEK DAN CLASS TUJUAN PRAKTIKUM

FAKULTAS TEKNIK UNIVERSITAS NEGERI YOGYAKARTA LAB SHEET PEMROGRAMAN 2

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

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

E-Book PEMROGRAMAN BERORIENTASI OBJEK. Disusun Oleh: Arfian Hidayat, S.Kom

Exception Handling and Multithreading

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

BAB 5 Mendapatkan Input dari Keyboard

Input Nilai tanpa Case String di Java

Polymorphism. Materi ke-8 Pemrograman Berbasis Objek

BAB 5 Mendapatkan Input dari Keyboard

TPI4202 e-tp.ub.ac.id. Lecture 4 Mas ud Effendi

IT652 Pemrograman Berorientasi Aspek. Ramos Somya

Overriding. Subclass yang berusaha memodifikasi tingkah laku yang diwarisi dari superclass. Tujuan: subclass memiliki tingkah laku yang lebih

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

1. Keyword mana yang memiliki fungsi sama dengan keyword this dan menyediakan reference ke atribut turunan dari objek? super

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

2 TIPE DATA DAN VARIABEL

1. Manakah jawaban yang benar,pada saat Anda mengcompile dan menjalankan class berikut ini:

Modul 3 Flow Control dan Input

adalah cara pandang yang memandang SEGALA SESUATU sebagai OBJEK. Semua aspek dalam Java programming dapat dianggap sebagai objek, -kecuali

Perulangan / Looping

BAB II VARIABEL DAN TIPE DATA

CHAPTER #5 DEBUGGING AND EXCEPTION HANDLING

Overriding, Overloading, Polymorphism. Pertemuan 10 Pemrograman Berbasis Obyek Dr. Rodiah

I/O (Input dan Output)

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

Apa yang menjadi output potongan kode diatas? Error karena tidak ada String yang di-passing kedalam konstruktor Bapak

BAHASA PEMROGRAMAN JAVA

PRAKTIKUM 7 DASAR INPUT OUTPUT

BAB 2 INPUT DARI KEYBOARD

SUMBER BELAJAR PENUNJANG PLPG

Pemrograman Berorientasi Objek 2

AP2B Dini Triasanti STRUKTUR PEMROGRAMAN PYTHON

INHERITANCE AND POLIMORPHISM PUTU INDAH CIPTAYANI JURUSAN SISTEM INFORMASI STMIK AMIKOM

Inheritance dan Kata Kunci static

Pemrograman Berorientasi. Class dan Obyek 2

Pemrograman Berorientasi Obyek (IT251) Ramos Somya, S.Kom., M.Cs.

GARIS-GARIS BESAR PROGRAM PENGAJARAN (GBPP)

OPERASI FILE & EXCEPTION HANDLING. Herman Tolle

GARIS-GARIS BESAR PROGRAM PENGAJARAN (GBPP)

Modul Praktikum Pemrograman

Inheritance (Pewarisan) Pengertian dasar inheritance

Modul Tutorial C# 2 DASAR PEMROGRAMAN C# : STATEMENT DAN OPERATOR ENRICO BUDIANTO MICROSOFT INNOVATION CENTER UNIVERSITAS INDONESIA

PEMROGRAMAN JAVA : VARIABEL DAN TIPE DATA

KONSEP OOP: PEWARISAN / INHERITANCE

Satuan Acara Perkuliahan (SAP) UNIVERSITAS GUNADARMA

Generics. Prepared by Viska Mutiawani. 1

JAVA BASIC PROGRAMMING Joobshet

PEMROGRAMAN SOCKET LANJUTAN

Membuat dan Menggunakan Class

SATUAN ACARA PERKULIAHAN (SAP) Dosen menerangkan materi kuliah. Mahasiswa duduk berkelompok dan saling membantu memahami penjelasan dosen

Array Multidimensi. Pemrograman Dasar. Java

Transkripsi:

Exception Handling Lanjutan Prepared by Viska Mutiawani 1

Subtopik Exception handling lanjutan Assertion Exception handling: try-catch-finally Exception handling: try-with-resources statement Keyword throws Keyword throw Exception handling pada method overriding 2

Assertion 3

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 AssertionError. Diperkenalkan pada Java versi ke 4. 4

Kegunaan assertion Berguna untuk mendeteksi dan mengoreksi error pemrograman. Assertion utamanya digunakan untuk tujuan pengujian. 5

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 6

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(); 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 7

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, NullPointerException etc. Jangan gunakan assertion, jika anda tidak menginginkan error pada situasi apapun. 8

Exception handling: Try-catchfinally 9

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. 10

What is exception handling? Merupakan mekanisme untuk menangani error runtime seperti ClassNotFound, IO, SQL, Remote etc. Kegunaannya: Menjaga aliran normal dari program/aplikasi 11

Skenario Andai ada statement seperti di bawah: statement 1; statement 2; statement 3; statement 4; statement 5;//exception occurs statement 6; 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. 12

Hirarki class Exception 13

Tipe-tipe exception Checked exception Dicek saat kompilasi Class yang extendthrowable (kecuali RuntimeException dan Error) merupakan checked exception. Unchecked exception 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 14

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 15

Exception handling dengan try-catchfinally 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 Syntax: try{ //code that may throw exception catch(exception_class_name ref){ finally{ 16

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..."); 17

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. Multiple catch blok harus disusun dari yang paling spesifik hingga yang paling umum. 18

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" ); 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..."); 19 class TestMultipleCatchBlock1{ public static void main(string args[]){ try{ int a[]=new int[5]; a[5]=30/0; catch(exception e){ 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...");

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{ 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.."); 20

Finally block Digunakan untuk eksekusi code penting seperti tutup connection, tutup stream. Akan selalu dieksekusi saat exception dihandle atau tidak dihandle. Haruslah sesudah block try atau block catch. 21

Exception handling: try-withresources statement 22

Try-with-resources Merupakan bentuk statemen try yang mendeklarasikan satu atau lebih sumber/resource. Resouce: merupakan objek yang harus ditutup setelah program selesai menggunakannya. Try-with-resource memastikan setiap resource yang dipakai akan ditutup setelah statemen resource selesai digunakan. Setiap objek yang mengimplement java.lang.autocloseable, java.io.closeable, dapat menjadi resource. 23

Try-with-resources Sebelum Java versi 7, untuk menutup resource (biasanya stream I/O, SQL connection) bisa menggunakan blok finally. Dengan menggunakan try-with-resource, method close() akan otomatis dipanggil sesudah resource selesai digunakan. 24

Bandingkan! 25

Bandingkan 26

Kondisi try-catch-finally Anda harus mengecek apakah resource yang digunakan null sebelum menutupnya. Menutup resource juga dapat menghasilkan exception, sehingga harus dihandle dalam try-cathc juga. Programmer sering lupa untuk menutup resource. 27

Keyword throws 28

Keyword throws Keyword throws digunakan untuk mendeklarasikan exception. Memberitahu bahwa coding akan menghasilkan exception dan menerima konsekuensi. Exception Handling dengan try-catch-finally dan try- with-resource biasanya digunakan untuk menghandle checked exceptions. Unchecked exception lebih baik dipastikan tidak terjadi dengan membuat coding yang baik. Contoh: pembagian dengan 0 sebaiknya sebelum membagi, pastikan dulu bukan nilai 0. Error: beyond your control Seperti: VirtualMachineError or StackOverflowError. 29

Contoh Syntax: return_type method_name() throws exception_class_name{ //method code Contoh: public void writelist() throws IOException { PrintWriter out = new PrintWriter(new FileWriter("Out.txt")); for (int i = 0; i < SIZE; i++) { out.close(); out.println("value at: " + i + " = " + list.get(i)); Coding ini ada array, jadi ada kemungkinan muncul unchecked exception IndexOutOfBoundsException. Namun unchecked exception tidak harus dimasukkan dalam throws. 30

Keyword throw 31

Keyword throw Keyword throw digunakan untuk melempar exception secara eksplisit. Kita dapat throw checked atau unchecked exception. Keyword throw biasanya digunakan untuk melempar custom exception. Syntax: throw exception; throw new IOException("sorry device error); 32

Contoh public class TestThrow1{ static void validate(int age){ if(age<18) throw new ArithmeticException("not valid"); else System.out.println("welcome to vote"); public static void main(string args[]){ validate(13); System.out.println("rest of the code..."); 33

throw vs throws 34

Custom exception 35

Custom exception Merupakan Exception yang dibuat sendiri. Dengan menggunakan custom exception, anda dapat memiliki Exception buatan sendiri dan pesan yang anda dapat desain sendiri. 36

Contoh class InvalidAgeException extends Exception{ InvalidAgeException(String s){ super(s); class TestCustomException1{ static void validate(int age)throws InvalidAgeException{ if(age<18) throw new InvalidAgeException("not valid"); else System.out.println("welcome to vote"); public static void main(string args[]){ try{ validate(13); catch(exception m){system.out.println("exception occured: "+m); System.out.println("rest of the code..."); 37

Exception propagation 38

Exception propagation/ merambat Setiap method yang menghasilkan exception akan disimpan dalam stack. Isi stack pertama adalah tempat method dipanggil. Kemudian method berikutnya disimpan dalam stack, dst. Sehingga exception akan merambat sesuai dengan urutan pada stack dan bergantung pada bagian mana exception yang muncul dihandle. Namun defaultnya checked exception tidak dirambatkan. 39

Contoh class TestExceptionPropagation1{ void m(){ int data=50/0; void n(){ m(); void p(){ try{ n(); Pada contoh di atas, exception muncul di m() namun tidak dihandle. Sehingga merambat ke method n() namun belum dihandle juga. Maka merambat ke bawah lagi P() dimana exception dihandle. catch(exception e){system.out.println("exception handled"); public static void main(string args[]){ TestExceptionPropagation1 obj=new TestExceptionPropagation1(); obj.p(); System.out.println("normal flow..."); 40

Exception handling pada overriding 41

Ada aturan exception handling pada method overriding Jika method pada superclass tidak mendeklarasi exception Method yang di-override pada subclass TIDAK boleh mendeklarasi checked exception, tapi boleh mendeklarasi unchecked exception. Jika method pada superclass mendeklarasi exception Method yang di-override pada subclass boleh mendeklarasi exception yang sama, subclass exceptionnya atau tidak ada exception. Namun tidak boleh mendeklarasi parent exception. 42

Contoh yg tidak boleh 43

Kegunaan exception Memisahkan code untuk menangani error dengan code yang biasa Merambatkan error dalam stack Mengelompokkan dan membedakan tipe error Read more: http://docs.oracle.com/javase/tutorial/essential/exceptions/advantages.html 44