Bahasa Pemrograman 2 Exception Handling Exception Handling [email protected] Exception • EException adalah ti d l h sebuah b h indikasi i dik i masalah l h yang muncul saat program dijalankan • Exception adalah kondisi abnormal yang terjadi saat program dijalankan program dijalankan • Saat S t program dijalankan dij l k Æ run‐time ti • Exception untukk run‐time error (run‐time error ( management) Exception • Exception : eksepsi, problem yang muncul jjarangg terjadi j ((infrequently) q y) • Exception perlu ditangani (exception handling) • Exception handling: memungkinkan E i h dli ki k program tetap berjalan seakan‐akan tidak muncul masalah • Fault tolerant : jika Fault tolerant : jika terjadi masalah program program tidak berhenti begitu saja Exception • Tanpa Exception Handling Eksekusi berhenti Tidak dijalankan error • Dengan Exception Handling Eksekusi tidak berhenti Execption pseudocode Execption pseudocode • Pseudocode P d d … Lakukan proses input Jika input tidak valid lakukan error-processing i Lakukan proses penghitungan Jika proses penghitungan gagal lakukan error-processing Lakukan proses penampilan hasil … Overview • Pada d bahasa b h pemrograman procedural, error d l handling ditangani bersamaan dengan proses‐ proses dalam d l program yang dibuat dib t (inline error (i li handling) • Inline error handling membuat program sulit untuk dibaca, dimodifikasi, debugging dan maintenance i • Pada Java, error handling dapat dilakukan bersamaan atau terpisah dari kode program utama Overview • Java Exception: object yang menggambarkan i bj b k sebuah kondisi eksepsional (exception) pada suatu t bagian b i kode k d • Saat terjadi exception, sebuah object yang mewakili exception tersebut dibuat dan dilemparkan (thrown) dari method dimana exception tersebut i b terjadi j di • Method tersebut dapat memilih untuk menghandle sendiri exception tersebut atau melemparkannya pada yang lain Overview • Exception dapat dihasilkan dari java run‐time y p dihasilkan secara manual dari system maupun kode program Overview • Exception yang dihasilkan i dih ilk oleh l h Java biasanya bi terjadi karena kesalahan dasar seperti melanggar k t t ketentuan‐ketentuan k t t d i bahasa dari b h pemrograman Java, pelanggaran pada batasan‐batasan yang telah didefinisikan dalam Java run‐time Java run time • Exception yang dihasilkan secara manual (generated by code) digunakan untuk melaporkan atau menangkap exception yang terjadi pada suatu method DivisionByZero Error DivisionByZero Error Overview Muncul Error: Stack trace: Stack trace: Exception in thread "main" java.lang.ArithmeticException: j g p / by y zero at example01.Main.pembagian(Main.java:18) at example01.Main.main(Main.java:13) Java Result: 1 DivByZero with Exception DivByZero with Exception Demo Exception Flow Demo Exception Flow • Example03 Kapan exception dapat digunakan? Kapan exception dapat digunakan? • Exception handling untuk synchronous error Exception handling untuk synchronous error – Error yang terjadi saat sebuah perintah dijalankan (run) • Tidak dapat digunakan untuk asynchronous error Overview • Synchronous Error : division by zero, out of y bound array, overflow, invalid method parameter, etc • Asynchronous Error : Network transfer, mouse clicks, keystrokes, etc Æ yang terjadi secara paralel dan independen terhadap aliran kontrol program (program flow control) Hierarki Java Exception Java Exception • Semua Java Exception merupakan keturunan ( (inherits) dari class Exception, baik secara ) p langsung maupun tidak langsung Hierarki Java Exception Java Exception Hierarki Exception • Seluruh class yang merupakan turunan dari p tapi bukan turunan dari p class Exception RuntimeException merupakan checked Exception • Seluruh class yang merupakan turunan dari class Error merupakan unchecked Exception class Error unchecked Exception Hierarki Exception • TTurunan dari d i Throwable Th bl ada d 2, yaitu 2 it Exception E ti dan Error • Exception: dapat ditangani oleh kode program dan eksekusi program dapat program dapat dilanjutkan • EError: terjadi t j di kesalahan k l h pada d Java Virtual J Vi t l Machine, kesalahan yang ditimbulkan oleh environment/system tidak dapat dihandle oleh environment/system, tidak program Hierarki Exception • Ch Checked Exception : Java Compiler mengecek kode k dE ti J C il kk d program, apakah suatu method mungkin menghasilkan exception, apakah exception tersebut sudah ditangkap ( (catch) atau dilempar (throws) ) ( ) – invalid user input, database problems, network outages, absent files • Unchecked Exception : Java Compiler tidak mengecek apakah suatu kode program menghasilkan exception atau k h t k d h ilk ti t tidak – Berupa logic error p g – IllegalArgumentException, NullPointerException, atau IllegalStateException Unchecked Exception Unchecked Exception Penggunaan Java Exception Java Exception • TTerdapat d t 5 keywords: 5k d try, catch, finally, throw, throws try { … } catch (Exception e) { … } finally { … } Penggunaan Java Exception Java Exception • Dengan try‐catch try { … } catch (Exception e) { } catch (Exception e) { … } Penggunaan Java Exception Java Exception • Dengan D t try‐catch‐finally t h fi ll try { … } catch (Exception e) { … } finally { … } Penggunaan Java Exception Java Exception • Block finally : pasti dijalankan dalam semua j exception atau p tidak)) kondisi ((terjadi • Di Digunakan k untukk menanggulangi l i resource leak (misal: kehabisan memory, deadlock/starvation) • Contoh: network error, file handle error, etc Penggunaan Java Exception Java Exception Penggunaan Java Exception Java Exception • Selain try‐catch‐finally, terdapat 2 keyword lagi: • throw di digunakan k untuk t k melempar l exception ti • throws digunakan untuk mendeklarasikan exception apa exception apa saja yang bisa dilempar Penggunaan Java Exception Java Exception • throw h melempar p exception p • Bentuknya: throw ThrowableInstance; ThrowableInstance: merupakan ThrowableInstance: merupakan object dari object dari class Throwable atau turunannya Penggunaan Java Exception Java Exception Penggunaan Java Exception Java Exception • throws : exception apa saja yang bisa p oleh suatu method dilempar • Bentuk umumnya : type method‐name(parameter‐list) throws h d ( li ) h exception‐list { // b d f // body of method th d } Penggunaan Java Exception Java Exception Penggunaan Java Exception Java Exception • Java menyediakan fasilitas stack‐trace untuk p urutan dari terjadinya j y exception p menampilkan • EException bisa i bi terjadi j di secara berantai b i (Chained Exception) • Ch Chained Exception : urutan i dE ti t exception dari ti d i method ke method Penggunaan Java Exception Java Exception • Demo Æ Chained Exception (Example07) Pembuatan Exception Baru Exception Baru • Selain menggunakan Exception yang sudah y ( Java), ) didefinisikan oleh library Java (bawaan anda juga dapat membuat exception sendiri untuk keperluan tertentu • Harus merupakan turunan dari class Exception Pembuatan Exception Baru Exception Baru • Misal anda ingin meminta input jargon ( (“client”) ) • Definisikan sebuah exception baru (misal namanya: InputJargonException namanya: InputJargonException • Exception terjadi apabila inputnya bukan “client” Pembuatan Exception Baru Exception Baru class InputJargonException l I tJ E ti extends Exception { t d E ti { private String nama; InputJargonException(String n) { InputJargonException(String n) { nama = n; } public String toString() { public String toString() { return "Ini adalah Exception InputJargonException :" + nama;; } } Pembuatan Exception Baru Exception Baru public static String inputHuruf() throws bli t ti St i i tH f() th InputJargonException { Scanner input new Scanner(System in) Scanner input = new Scanner(System.in); System.out.print("Masukkan jargon : "); S i h il = input.next(); String hasil i () System.out.println("Anda memasukkan " + hasil); if(hasil.equalsIgnoreCase("client") == false) throw new InputJargonException("Jargon Error"); return hasil; } NEXT • Class Diagram