Pemrograman Berbasis Obyek Oleh Tita Karlita

Slides:



Advertisements
Presentasi serupa
EXCEPTION HANDLING.
Advertisements

Mendapatkan Input dari Keyboard
Pemrograman Berorientasi Objek (Project)
Java Fundamentals: 5. Java Advanced
Try, Catch, Finally Throws
Java Progamming Operasi I/O
Pemrograman Berorientasi Objek
POLIMORFISME Imam Fahrur Rozi 01.
Abstract Class & Interface
Workshop SCS: Java Game Programming
PEMROGRAMAN KOMPUTER 2 4 SKS 2 TEORI DAN 2 PRAKTEK NANDANG HERMANTO. S.Kom.
Dasar Exception Handling
Flow Control & Exception Handling
Pemrograman Berorientasi Objek
Flow Control & Exception Handling
SLIDE OTOMATIS PINDAH DALAM WAKTU 4-5 MENIT. A:kiriB:kanan Deklarasikan sebuah variabel dengan nama ‘isi’ yang mempunyai type array of double dengan ukuran.
Overriding, Overloading, Polymorphism
Java Review Oleh: Idris Winarno.
Overriding, Overloading, Polymorphism
Pertemuan 8 Pemrograman Berbasis Obyek Oleh Tita Karlita
MATA KULIAH : PEMROGRAMAN 3 JAVA PROGRAMMING (JSE)
Pemrograman Berorientasi Objek
Dasar exception handling
Pemrograman Berorientasi Objek 1
Mendapatkan input dari keyboard
Mendapatkan Input dari Keyboard
Struktur Kode Aplikasi Java (1)
EXCEPTION TRY-CATCH-FINALLY
Diberikan pada Kuliah Sela Teknik Informatika - Universitas Muhammadiyah Malang Tahun 2011.
Polymorphism (bag. 2).
Exceptional Pendahuluan Bugs dan error dalam sebuah program sangat sering muncul meskipun program tersebut dibuat oleh programmer berkemampuan tinggi.
Pertemuan 12 Pemrograman Berbasis Obyek Oleh Tita Karlita
Do you remember this?.  Strategy  Concrete Strategy  Context  Client Strategy Pattern consists of..
- PERTEMUAN 4- EXCEPTION
MATERI IV OOP (Object Oriented Programming) Chapter II.
Dasar exception handling
Try, Catch, Finally Throws
Pemrograman berbasis obyek
Algoritma & Pemrograman 1
Penanganan Eksepsi.
Pertemuan 6 PEWARISAN AND POLYMORPHISM
Exception Handling (Penanganan Error)
Kelas A dapat memiliki referensi ke obyek dari kelas- kelas lain sebagai anggota. Kadang-kadang disebut sebagai hubungan “has-a”. Sebagai contoh, sebuah.
Penanganan Eksepsi Disusun Oleh: Reza Budiawan Untuk:
Teori Pertemuan 9 “Exception”
Inner Class dan Eksepsi (Exception)
Konsep Dasar Exception Handling
Penanganan Eksepsi Pertemuan Ke- 9.
BAB XI EXCEPTION HANDLING.
Dosen : Bella Hardiyana, S. Kom
Exception dan Assertion
Tipe Data, Variabel, dan Operator
Exception Handling (Penanganan Error)
MATERI PENDUKUNG PENGGUNAAN THROW
Pemrograman Berorientasi Objek
Exception Handling, Package, Abstract Class & Interface
Tipe Data, Variabel, dan Operator
ASWAR R. Universitas Negeri Makassar
Pemrograman Berorientasi Objek 1
Flow Control & Exception Handling
Exception Sussi.
Exception Sussi.
Pemrograman Berorientasi Object
Pemrograman Berorientasi Obyek
Dasar exception handling
Pemrograman Berorientasi Object
Pertemuan 9 PENANGAN EKSEPSI
Penanganan Exception di Java
Tipe Data, Variabel, dan Operator
DPH1C4 Pemrograman berorientasi Obyek
Transcript presentasi:

Pemrograman Berbasis Obyek Oleh Tita Karlita Exception Handling Pemrograman Berbasis Obyek Oleh Tita Karlita

Pengertian Eksepsi Suatu mekanisme penanganan kesalahan ringan (mild error). Peristiwa yang terjadi ketika program menemui kesalahan pada saat instruksi program dijalankan. Exception sering digunakan dalam akses sumberdaya non memori.

Pengertian Eksepsi Eksepsi adalah suatu kondisi abnormal yang terjadi pada saat pengeksekusian suatu perintah. Java everything is an object Suatu eksepsi juga direpresentasikan oleh sebuah obyek yang menjelaskan tentang eksepsi tersebut.

Apa yang terjadi jika terjadi kesalahan? Maka method tempat eksepsi terjadi akan melakukan dua pilihan Menangani sendiri eksepsi Meneruskannya keluar dengan cara membuat obyek yang menjelaskan eksepsi dan melemparkannya (throw) agar ditangani oleh kode yang memanggil method tersebut.

Apa yang terjadi jika terjadi kesalahan? Secara otomatis akan dilempar sebuah object yang disebut dgn exception. Exception dapat diproses lebih lanjut oleh fungsi-fungsi yang siap menangani kesalahan. Proses pelemparan exception disebut dgn throwing exception. Proses penerimaan exception disebut dengan catch exception.

Contoh Exception: File yang akan dibuka tidak ada. Koneksi jaringan putus. Pembagian bilangan dengan 0 Pengisian elemen array diluar ukuran array Kegagalan koneksi database Operan yg akan dimanipulasi out of prescribed range

Common Exception 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 : 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

Keywords try catch finally throw throws

Bentuk penggunaan try{ /* kode yang memungkinkan terjadinya eksepsi } catch(TipeEksepsi1 obyekEksepsi)1{ /* kode untuk menangani eksepsi1 //… catch(TipeEksepsiN obyekEksepsiN){ /* kode untuk menangani eksepsiN finally{ /* kode yang pasti akan dieksekusi setelah blok try catch di atas dieksekusi*/

Blok try : digunakan untuk menempatkan kode-kode 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. Blok finally : digunakan untuk menempatkan kode-kode program yang pasti akan selalu dieksekusi baik terjadi atau tidak terjadi eksepsi

Purpose of each exception Error : tipe eksepsi yang tidak ditangani dengan try-catch karena berhubungan dengan java run time system/environment. Mengindikasikan bahwa error yang terjadi adalah kritis/fatal error (severe problem) dimana proses recovery sangat sulit dilakukan bahkan tidak mungkin dilakukan. Contoh : program running out of memory

Purpose of each exception Exeption yang sebaiknya ditangani oleh program secara langsung Dalam praktek akan lebih banyak menggunakan subclass dari kelas Exception

UnCheck Exception Semua eksepsi yang bertipe RuntimeException dan turunannya tidak harus ditangani secara eksplisit. Mengindikasikan kesalahan implementasi atau desain program. Contoh : ArrayIndexOutOfBoundsException

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1 class DemoEksepsi{ public static void main(String arg[]){ int []arr = new int[1]; System.out.println(arr[1]); } Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1 at DemoEksepsi.main(DemoEksepsi.java:4) Finished executing

class DemoEksepsi3{ public static void main(String arg[]){ try{ int []arr = new int[1]; System.out.println(arr[1]); System.out.println("Baris ini tidak pernah dieksekusi"); }catch(ArrayIndexOutOfBoundsException e){ System.out.println("Terjadi eksepsi karena index melebihi kapasitas"); } System.out.println(“Setelah blok try-catch");

Check Exception Semua tipe eksepsi yang bukan turunan class RuntimeException merupakan eksepsi yang harus ditangani dengan menggunakan blok try-catch Mengindikasikan kesalahan environment. Contoh : file not found, invalid URL exception

import java.io.*; class DemoEksepsi1{ public static void main(String arg[]){ File test = new File("c:\test.txt"); test.createNewFile(); }

import java.io.*; class DemoEksepsi1{ public static void main(String arg[]){ try{ File test = new File("c:\test.txt"); test.createNewFile(); }catch(IOException e){ System.out.println("IO Exception sudah ditangani"); }

Stack Trace class DemoEksepsi2{ public static void testMethod1(){ int []arr = new int[1]; System.out.println(arr[1]); } public static void testMethod2(){ testMethod1(); public static void main(String arg[]){ testMethod2();

Contoh kejadian error (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 case 4: //file corrupted default: // other error } } else { // file loaded OK, continue with program

Misal terdapat algoritma program: Fungsi bacaFile BukaFile BacaBarisFileSampaiHabis TutupFile

Ditambahkan program untuk pengecekan berhasil tidaknya pembacaan file Fungsi bacaFile BukaFile Jika Gagal Buka File Lakukan Sesuatu Jika Berhasil Buka File BacaBarisFileSampaiHabis TutupFile

Bagaimana bila ditambahkan program untuk pengecekan terhadap status pembacaan file? Bagaimana bila ditambahkan program untuk pengecekan terhadap status penutupan file? Maka program akan menjadi sangat panjang dan banyak terdapat nested if-else.

Solusi? Gunakan exception Bentuk: try { ……….. } catch (ExceptionType x) { }

Implementasi BukaFile BacaBarisFileSampaiHabis TutupFile try { Fungsi bacaFile BukaFile BacaBarisFileSampaiHabis TutupFile } catch (KesalahanBukaFile) { // lakukan sesuatu } catch (KesalahanAlokasiMemori) { } catch (KesalahanTutupFile) { }

Try dgn banyak catch 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 x2) { }

Terjadi eksepsi karena pembagian dengan nol Setelah blok try-catch class DemoEksepsi4{ public static void main(String arg[]){ try{ int x = arg.length; int y = 100/x; int []arr = {91,92}; y = arr[x]; System.out.println("Tidak terjadi eksepsi"); }catch(ArithmeticException e){ System.out.println("Terjadi eksepsi karena pembagian dengan nol"); }catch(ArrayIndexOutOfBoundsException e){ System.out.println("Terjadi eksepsi karena index melebihi kapasitas"); } System.out.println("Setelah blok try-catch"); D:\ java DemoEksepsi4 Terjadi eksepsi karena pembagian dengan nol Setelah blok try-catch D:\ java DemoEkseps4i Param1 Tidak terjadi eksepsi Setelah blok try-catch D:\ java DemoEksepsi4 Param1 Param2 Terjadi eksepsi karena index melebihi kapasitas Setelah blok try-catch

Blok catch yang dikerjakan adalah yang sesuai dengan obyek eksepsi Sekali running, hanya satu block catch yang sesuai dengan obyek eksepsi yang akan dieksekusi Block catch bertipe subclass harus ditulis lebih dulu baru diikuti block catch bertipe superclass Blok catch dengan tipe data superclas dapat menangani eksepsi yang sesuai dengan tipe datanya sendiri dan tipe data subclass-nya

class DemoEksepsi5{ public static void main(String arg[]){ try{ int x = arg.length; int y = 100/x; int []arr = {91,92}; y = arr[x]; System.out.println("Tidak terjadi eksepsi"); }catch(ArithmeticException e){ System.out.println("Terjadi eksepsi karena pembagian dengan nol"); }catch(ArrayIndexOutOfBoundsException e){ System.out.println("Terjadi eksepsi karena index melebihi kapasitas"); }catch(Exception e){ System.out.println("Terjadi eksepsi yang tidak diketahui"); } System.out.println("Setelah blok try-catch"); Exception adalah superclass dari ArithmeticException dan ArrayIndexOutOfBoundsException sehingga superclass ini harus di taruh di blok catch paling bawah

Bila eksepsi superclass ditaruh di bawah class DemoEksepsi5{ public static void main(String arg[]){ try{ int x = arg.length; int y = 100/x; int []arr = {91,92}; y = arr[x]; System.out.println("Tidak terjadi eksepsi"); }catch(Exception e){ System.out.println("Terjadi eksepsi yang tidak diketahui"); }catch(ArithmeticException e){ System.out.println("Terjadi eksepsi karena pembagian dengan nol"); }catch(ArrayIndexOutOfBoundsException e){ System.out.println("Terjadi eksepsi karena index melebihi kapasitas"); } System.out.println("Setelah blok try-catch");

Object Exception Object exception yang dihasilkan dapat dimanfaatkan untuk mengetahui lebih lanjut mengenai error atau exception yang terjadi. Exception merupakan subclass dari class Throwable.

Method yang diwarisi oleh exception: - 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.

Blok try – catch bertingkat ……….. } catch (Exception x) { }

Menggunakan keyword “throw” Secara eksplisit, eksepsi bisa dilempar (throw) oleh suatu program. Bentuk penggunaan: throw ObyekEksepsi; ObyekEksepsi disini adalah semua obyek yang merupakan turunan class Throwable.

class LemparEksepsi{ public static void methodLain(){ try{ throw new ArrayIndexOutOfBoundsException(1); }catch(ArrayIndexOutOfBoundsException e){ System.out.println("Penanganan Eksepsi dlm methodlain()"); throw e; } public static void main(String arg[]){ methodLain(); System.out.println("Penanganan Eksepsi dlm method main()"); Melempar obyek eksepsi secara eksplisit Obyek eksepsi dilempar lagi ke luar method

Menggunakan keyword “throws” Dibutuhkan hanya oleh check exception. Digunakan oleh method yang tidak menangani eksepsi sendiri sehingga eksepsi dilempar keluar method. Semua kemungkinan eksepsi yang terjadi harus didaftar di deklarasi method.

throw new ServerException("Eksepsi dalam method"); else import java.io.*; class DemoEksepsi6{ public static void methodLain() throws IOException throw new ArrayIndexOutOfBoundsException("Eksepsi IO dlm method"); } Method ini melempar lebih dari satu jenis eksepsi import java.rmi.*; class DemoEksepsi7{ public static void methodLain() throws ServerException, RemoteException{ int i = 10; if(i==10) throw new ServerException("Eksepsi dalam method"); else throw new RemoteException("Eksepsi lainnya dalam method"); }

Blok Try – Catch - Finally Blok finally : digunakan untuk mendefinisikan kode program yang selalu dieksekusi baik ada exception yang terjadi maupun bila tidak terjadi exception sama sekali. Bentuk: try { ……….. } catch (Exception x) { } finally { }

Menggunakan keyword “finally” Blok finally : digunakan untuk menempatkan kode-kode program yang pasti akan selalu dieksekusi baik terjadi atau tidak terjadi eksepsi

C:/ java DemoEksepsi8 Param1 Buka file Proses file Tutup File import java.io.*; class DemoEksepsi8{ public static void methodLain(int i) throws CharConversionException{ System.out.println("Buka file"); try{ System.out.println("Proses file"); if(i==0) throw new CharConversionException("Test Eksepsi dlm methodLain"); }catch(CharConversionException e){ System.out.println("Penanganan Eksepsi dlm methodLain"); throw e; } System.out.println("Tutup File"); public static void main(String arg[]){ methodLain(arg.length); System.out.println("Penanganan Eksepsi dalam method main()"); Kode ini tidak akan dieksekusi jika terjadi eksepsi pada blok try C:/ java DemoEksepsi8 Param1 Buka file Proses file Tutup File C:/ java DemoEksepsi8 Buka file Proses file Penanganan Eksepsi dlm methodLain Penanganan Eksepsi dalam method main()

Analisa DemoEksepsi8 Bila terjadi eksepsi, bagian perintah yang mencetak kalimat TUTUP FILE tidak tercetak. Padahal file yang dibuka harus ditutup kembali. Cara termudah adalah menuliskan perintah tutup file disemua kode yg memungkinkan dieksekusi terakhir kali sebelum keluar program. Sehingga menulis kode berulang kali

import java.io.*; class DemoEksepsi8{ public static void methodLain(int i) throws CharConversionException{ System.out.println("Buka file"); try{ System.out.println("Proses file"); if(i==0) throw new CharConversionException("Test Eksepsi dlm methodLain"); }catch(CharConversionException e){ System.out.println("Penanganan Eksepsi dlm methodLain"); throw e; }finally{ System.out.println("Tutup File"); } public static void main(String arg[]){ methodLain(arg.length); System.out.println("Penanganan Eksepsi dalam method main()");

Membuat class exception baru Sebuah subclass dari exception dapat dibentuk programmer untuk mendefinisikan sendiri secara lebih rinci tentang exception yang dapat terjadi. Class exception baru ini harus merupakan subclass dari java.lang.Exception. Didalam class baru cukup mendeklarasikan konstruktor yang mungkin akan digunakan. Tidak harus mengimplementasikan atau mengoveride method yang dimiliki Throwable sbg superclass tertinggi.

class EksepsiBuatan1 extends Exception{ EksepsiBuatan1(String s){ super(s); } class DemoEksepsi10{ public static void methodLain() throws EksepsiBuatan1{ throw new EksepsiBuatan1("Deskripsi Eksepsi"); } public static void main(String arg[]){ try{ methodLain(); }catch(EksepsiBuatan1 e){ System.out.println("Terjadi eksepsi - " + e);

Aturan Overriding Mode akses overriding method harus sama atau lebih luas dari pada overriden method. Subclass hanya boleh meng-override method superclass satu kali saja, tidak boleh ada lebih dari satu method pada kelas yang sama yang sama persis. Overriding method tidak boleh throw checked exceptions yang tidak dideklarasikan oleh overridden method.