Pemrograman Berbasis Objek
Exception Handling
Politeknik Elektronika Negeri Surabaya
Pemrograman Berbasis Objek
Topik p • • • • •
Kategori Exception try, catch, finally Method yyang g melempar p exception p Aturan overriding method dan exception Membuat class exception baru
Politeknik Elektronika Negeri Surabaya
Pemrograman Berbasis Objek
Definisi Exception • Suatu mekanisme penanganan kesalahan. • Event yang terjadi ketika program menemui kesalahan saat instruksi program dijalankan.
Politeknik Elektronika Negeri Surabaya
Pemrograman Berbasis Objek
Exception • Exception sering digunakan dalam akses sumberdaya b d non memori. i Catatan: • Exception = untuk menangani kesalahan ringan (mild error). error) • Error = mengindikasikan bahwa error yang terjadi adalah fatal error (severe problem) dimana proses recovery sangat sulit dilakukan bahkan tidak mungkin dilakukan (Contoh : program running out of memory)
Politeknik Elektronika Negeri Surabaya
Pemrograman Berbasis Objek
Contoh kesalahan yang terjadi: yang terjadi: • • • • •
Pembagian bilangan dengan 0 Pengisian elemen array diluar ukuran array g g koneksi database Kegagalan File yang akan dibuka tidak exist p yg akan dimanipulasi p out of p prescribed Operand range g obyek y yyang g belum diinisialisasi • Mengakses
Politeknik Elektronika Negeri Surabaya
Pemrograman Berbasis Objek
Common Exception p
ArithmeticException Hasil dari operasi divide-by-zero pada integer Misal : int i = 12/0;
NullPointerException Mencoba mengakses atribut atau method suatu object padahal object belum dibuat. Misal Mi l : Date d = null; System.out.println(d.toString());
NegativeArraySizeException Mencoba membuat array dengan ukuran negatif.
ArrayIndexOutOfBoundsException Mencoba mengakses elemen array dimana index nya melebihi ukuran array.
SecurityException Biasanya dilempar ke browser, class security manager melempar exception untuk applet yang mencoba melakukan: Mengakses lokal file Open socket ke host yg berbeda dgn host yg di open oleh applet
Politeknik Elektronika Negeri Surabaya
Pemrograman Berbasis Objek
Contoh Exception Class DivByZero { public static void main(String args[]) { System.out.println(3/0); System out println(“Pls System.out.println( Pls. print me me.”); ); } } • Menampilkan M ilk pesan error Exception in thread "main“ java.lang.ArithmeticException: / by zero at DivByZero.main(DivByZero.java:3)
Politeknik Elektronika Negeri Surabaya
7
Pemrograman Berbasis Objek
Kategori Exception
Politeknik Elektronika Negeri Surabaya
Pemrograman Berbasis Objek
Apa yang terjadi jika terjadi kesalahan? • Secara otomatis akan dilempar p sebuah object j yyang g disebut dgn exception. • Exception dapat diproses lebih lanjut oleh fungsi-fungsi yang siap menangani kesalahan. • Proses pelemparan exception disebut dgn throwing exception. • Proses P penerimaan i exception ti disebut di b t dengan d catch t h exception.
Politeknik Elektronika Negeri Surabaya
Pemrograman Berbasis Objek
Contoh kejadian error – Cara lama (loading file from the disk) (loading file from the disk) int status = loadTexfile();
If (status != 1) { // something unusual happened, describe it switch (status) { case 2: // file not found break; case 3: //disk error break; case 4: //file corrupted break; default: // other error } } else { // file loaded OK, continue with program }
Politeknik Elektronika Negeri Surabaya
Pemrograman Berbasis Objek
Contoh program p g Fungsi bacaFile BukaFile BacaBarisFileSampaiHabis TutupFile
Politeknik Elektronika Negeri Surabaya
Pemrograman Berbasis Objek
Ditambahkan program untuk pengecekan berhasil tidaknya pembacaan file
Fungsi bacaFile BukaFile Jika Gagal Buka File Lakukan Sesuatu Jika Berhasil Buka File BacaBarisFileSampaiHabis TutupFile
Politeknik Elektronika Negeri Surabaya
Pemrograman Berbasis Objek
• Bagaimana bila ditambahkan program untuk pengecekan terhadap status pembacaan file? g bila ditambahkan p program g untuk • Bagaimana pengecekan terhadap status penutupan file? program g akan menjadi j sangat g p panjang j g • Maka p dan banyak terdapat nested if-else.
Politeknik Elektronika Negeri Surabaya
Pemrograman Berbasis Objek
Solusi? Gunakan exception Bentuk: try { ……….. } catch (ExceptionType x) { ……….. }
Politeknik Elektronika Negeri Surabaya
Pemrograman Berbasis Objek
• Blok try : digunakan untuk menempatkan kode kodekode program java yang mengandung kode program yang mungkin melemparkan exception. • Blok catch : digunakan untuk menempatkan kode-kode program java yang digunakan untuk menangani sebuah exception tertentu.
Politeknik Elektronika Negeri Surabaya
Pemrograman Berbasis Objek
Implementasi 1 p try {
Fungsi bacaFile BukaFile BacaBarisFileSampaiHabis TutupFile } catch (KesalahanBukaFile) { // lakukan sesuatu }
Politeknik Elektronika Negeri Surabaya
Pemrograman Berbasis Objek
Try dgn banyak catch y g y
Dapat digunakan beberapa blok catch untuk satu blok try. Exception dalam satu program bisa mengatasi banyak exception. Contoh implementasi: Misal dalam satu blok try terdapat kemungkinan terjadi: NullPointerException IndexOutOfBoundsException ArithmeticException try { ……….. } catch (ExceptionType1 x1) { ……….. } catch ((ExceptionType2 p yp x2)) { ……….. }
Politeknik Elektronika Negeri Surabaya
Pemrograman Berbasis Objek
Implementasi 2 p try {
Fungsi bacaFile BukaFile BacaBarisFileSampaiHabis p TutupFile } catch (KesalahanBukaFile) { // lakukan sesuatu } catch (KesalahanAlokasiMemori) { // lakukan sesuatu } catch (KesalahanTutupFile) { // lakukan sesuatu }
Politeknik Elektronika Negeri Surabaya
Pemrograman Berbasis Objek
Checked/Unchecked Exceptions Checked/Unchecked Exceptions • Exception p bisa checked atau unchecked – Checked = dicek oleh the compiler
• Checked exception hanya dapat ditangani dalam try block atau method yang didesain untuk melempar exception. – Compiler akan memberitahu jika checked exception tidak ditangani secara tepat. t t – Contoh : IOException.
• Unchecked exception tidak memerlukan penanganan langsung . Pada saat dicompile tidak ada pemberitahuan kesalahan. – Contoh : RunTimeException dan turunannya Politeknik Elektronika Negeri Surabaya
19
Pemrograman Berbasis Objek
Checked/Unchecked Exceptions Checked/Unchecked Exceptions
Politeknik Elektronika Negeri Surabaya
20
Pemrograman Berbasis Objek
Melempar Exception ‐ Throw Th • Java memperbolehkan untuk melempar exception (generate exception) p object>; j ; throw <exception • Exception yang dilempar adalah sebuah object exception p ((Object j exception p yyang g sudah disediakan oleh java atau yang di create sendiri) • Contoh: throw new ArithmeticException(“testing...”);
Politeknik Elektronika Negeri Surabaya
21
Pemrograman Berbasis Objek
Contoh Melempar Exception ‐ Throw h
Politeknik Elektronika Negeri Surabaya
22
Pemrograman Berbasis Objek
Mendefinisikan method yang menghasilkan exception • • • • • •
Dilakukan bila method tidak ingin g menangani g exception p sendiri. Method tertentu dlm program mungkin akan menghasilkan error yang tidak dikenali secara otomatis oleh Java Virtual Machine. Berlaku bagi kategori exception yg bukan subclass dari RunTimeException. Contoh: EOFException, MallformedURLException Dengan cara membuat method yang dapat melempar exception. Sintaks
<methodName> (<parameterList>) throws <exceptionList> { <methodBody> }
Politeknik Elektronika Negeri Surabaya
Pemrograman Berbasis Objek
Contoh method yang mendefinisikan exception Class methodKu{ public Image loadImage(String s) throws EOFException, MalformedURLException { If(kondisierroryangterjadi) throw new EOFException() } }
Politeknik Elektronika Negeri Surabaya
Pemrograman Berbasis Objek
Contoh method yang mendefinisikan exception ti •
Politeknik Elektronika Negeri Surabaya
25
Pemrograman Berbasis Objek
Contoh method yang mendefinisikan exception i •
Beberapa method java menggunakan statement throw untuk exception
public Object pop() throws EmptyStackException { Object obj; Pada program Stack, jika if (size == 0) throw new EmptyStackException(); user mengambil elemen pada stack, jika stack kosong obj = objectAt(size – 1); maka akan melempar setObjectAt(size - 1, null); exception size--; EmptyStackException return obj; }
[source: java.sun.com]
Politeknik Elektronika Negeri Surabaya
26
Pemrograman Berbasis Objek
Exception Propagation Exception Propagation • Exception dapat ditangani pada tingkat yang lebih tinggi, jika di tempat terjadinya exception tidak ditangani secara tepat. • Exception merambat naik(propagate up) melalui method calling hierarchy sampai exception ditangkap atau p mencapai p level method main. sampai
Politeknik Elektronika Negeri Surabaya
27
Pemrograman Berbasis Objek
Contoh Exception Propagation Exception Propagation void method1 throws IOException { throw new IOException("Error in method1"); } void method2 throws IOException { // do stuff, but no catch, just specify method1(); } void method3 throws IOException { // do stuff, but no catch, just specify method2(); } public static void main (String args[]){ // catch if just specify error to console try { method3(); } catch (IOException e){ // handle the exception from method1 } Politeknik Elektronika Negeri Surabaya }
28
Pemrograman Berbasis Objek
Object Exception Object Exception • Object exception yang dihasilkan dapat dimanfaatkan untuk mengetahui lebih lanjut mengenai error atau exception yang terjadi. • Exception merupakan subclass dari class Throwable.
Politeknik Elektronika Negeri Surabaya
Pemrograman Berbasis Objek
Method yang diwarisi y g oleh exception: p - getMessage() method ini mengembalikan isi pesan untuk menggambarkan exception yang terjadi – printStackTrace() method ini menampilkan pesan error dan stack trace ke standard error output stream yang biasanya merupakan konsol window apabila program merupakan program konsol. – printStackTrace(PrintStream s) method ini mengembalikan pesan error ke objek PrintStream yang dijadikan parameter. Apabila ingin menampilkan pesan ke konsol, anda dapat menggunakan ystem.out sebagai parameter.
Politeknik Elektronika Negeri Surabaya
Pemrograman Berbasis Objek
Blok try – y catch bertingkat g try { y{ try ……….. } catch (Exception x) { ……….. } try { ……….. } catch (Exception x) { ……….. } } catch (Exception x) { ……….. }
Politeknik Elektronika Negeri Surabaya
Pemrograman Berbasis Objek
Blok Try – y Catch ‐ Finally y • Blok finally : digunakan untuk mendefinisikan kode program yang selalu l l dieksekusi di k k i baik b ik ada d exception ti yang terjadi maupun bila tidak terjadi exception sama sekali. • Bentuk: B t k try { ……….. } catch (Exception e) { ……….. } finally { ……….. }
Politeknik Elektronika Negeri Surabaya
Pemrograman Berbasis Objek
Contoh finally try { out = new PrintWriter(new FileWriter("out.txt")); // statements that throws exceptions } catch (ArrayIndexOutOfBoundsException e) { System.err.println("Caught array error"); } catch (IOException e) { System.err.println("Caught I/O error"); } finally { if (out != null) { System.out.println("Closing file); out.close(); }
Politeknik Elektronika Negeri Surabaya
33
Pemrograman Berbasis Objek
Contoh: Tanpa Exception Handling
Politeknik Elektronika Negeri Surabaya
Pemrograman Berbasis Objek
Contoh: Dengan Exception Handling
Politeknik Elektronika Negeri Surabaya
Pemrograman Berbasis Objek
Membuat class exception baru p • Sebuah subclass dari exception dapat dibuat sendiri oleh programmer untuk mendefinisikan sendiri secara lebih rinci tentang exception yang dapat terjadi. • Class exception baru ini harus merupakan subclass dari java.lang.Exception.
Politeknik Elektronika Negeri Surabaya
Pemrograman Berbasis Objek
Overriding Method dan Exception g p • Overriding g method hanya y boleh melempar p exception yang merupakan subclass dari exeption yang dilempar oleh overriden method atau sama. • Overriding method boleh mendeklarasikan exception lebih sedikit dari jumlah exception kepunyaan overridden method method. Catatan; • Overriding method =method yang mengoveride. • Overridden method = method yang dioveride.
Politeknik Elektronika Negeri Surabaya
Pemrograman Berbasis Objek
Contoh 1: Method Overriding
• Class TestB1Æ ok karena ArithmeticException p merupakan subclass dari RuntimeException. • Class TestB2Æ error karena Exception merupakan superclass dari RuntimeException. Politeknik Elektronika Negeri Surabaya
Pemrograman Berbasis Objek
Contoh 2: Method Overriding
• Class TestMultiB1 Æ ok karena FileNotFoundException dan UTFD t F UTFDataFormatException tE ti merupakan k subclass b l dari d i IOException IOE ti • Dan Arithmetic Exception merupakan subclass dari RuntimeException. Politeknik Elektronika Negeri Surabaya
Pemrograman Berbasis Objek
Contoh 3: Method Overriding
• Class TestMultiB2 Æ error karena SQLException atau superclass dari SQLException tidak dideklarasikan pada class TestMultiA. • TestMultiB2 tidak boleh menambahkan exception baru Politeknik Elektronika Negeri Surabaya
Pemrograman Berbasis Objek
Contoh 4: Method Overriding
• Class TestMultiB3 Æ ok karena FileNotFoundException adalah subclass b l dari d i IOException. IOE ti • Contoh diatas menunjukkan bahwa overriding method boleh mendeklarasikan exception yang lebih sedikit dari exception kepunyaan overridde method. Politeknik Elektronika Negeri Surabaya
Pemrograman Berbasis Objek
Membuat Exception p • Tujuan: mendefinisikan class exception yang lebih spesifik untuk keperluan tertentu. • Untuk U t k membuat b t class l exception ti baru b maka class itu harus merupakan subclass d i class dari l E Exception. ti
Politeknik Elektronika Negeri Surabaya
Pemrograman Berbasis Objek
Contoh 1: Membuat class exception baru class exception baru class Salah extends Exception{ public Salah(){} public Salah(String pesan){ super(pesan); } }
Politeknik Elektronika Negeri Surabaya
Pemrograman Berbasis Objek
public class TesSalah{ public static void main(String [] arg) throws Salah{ Salah s = new Salah(“Salah disengaja ha..ha..”); ha ha ”); int i = 0; if (i==0) throw s; } }
Politeknik Elektronika Negeri Surabaya
Pemrograman Berbasis Objek
Contoh 2 Membuat b class exception baru l b
Politeknik Elektronika Negeri Surabaya
45