09 Exceptions & File I/O OOP Java. Materi hari ini ExceptionsExceptions – Apa & kapan exception terjadi – Menangani exception – Menghindar (tidak menangani.

Slides:



Advertisements
Presentasi serupa
EXCEPTION HANDLING.
Advertisements

Mendapatkan Input dari Keyboard
Pemrograman Berorientasi Objek
Try, Catch, Finally Throws
Variabel di Java Variabel merupakan sebuah tempat untuk menyimpan data. Di Java setiap pembuatan variabel harus ditentukan tipe.
Java Progamming Operasi I/O
Abstract Class & Interface
Dasar Exception Handling
Flow Control & Exception Handling
Java array.
Praktikum OOP Pengenalan Java Nana Ramadijanti Laboratorium Computer Vision Politeknik Elekltronika Negeri Surabaya PENS-ITS 2009.
Array, Class, Obyek, Method danConstructor.
MATA KULIAH : PEMROGRAMAN 3 JAVA PROGRAMMING (JSE)
Pemrograman Berorientasi Objek
Dasar exception handling
Mendapatkan input dari keyboard
Mendapatkan Input dari Keyboard
Struktur Kode Aplikasi Java (1)
As’ad Djamalilleil Function (method) As’ad Djamalilleil
EXCEPTION TRY-CATCH-FINALLY
- PERTEMUAN 4 - PERULANGAN
PELATIHAN JAVA FUNDAMENTAL
Object Oriented Programming with JAVA 2011/2012
Argumen Command-line Sebuah aplikasi Java dapat menerima sejumlah argumen dari command-line. Argumen dari command line memberikan kesempatan bagi.
Public class RelasiDemo { public static void main(String[] args) { //beberapa nilai int i = 37; int j = 42; int k = 42; System.out.println("Nilai variabel...");
Exceptional Pendahuluan Bugs dan error dalam sebuah program sangat sering muncul meskipun program tersebut dibuat oleh programmer berkemampuan tinggi.
Do you remember this?.  Strategy  Concrete Strategy  Context  Client Strategy Pattern consists of..
Struktur kontrol.
OOP Java Minggu 2b Dasar OOP. Class (1) Deklarasi class : [ *] class { [ *] } Cat : [] = optional, * = repeat 0-N.
Algoritma & Pemrograman 1
Perulangan (Iteration)
03 Elemen Dasar Bahasa Java
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
Pada Bab sebelumnya, kita telah mendiskusikan bagaimana cara pendeklarasian berbagai macam variabel dengan menggunakan tipe data primitif. Dalam pendeklarasian.
Command line argument.
Command line argument.
Modul 6: Abstract Class, abstract method
Penanganan Eksepsi Disusun Oleh: Reza Budiawan Untuk:
JAVA ARRAY.
Inner Class dan Eksepsi (Exception)
Konsep Dasar Exception Handling
Pemprograman Berorientasi Objek
Penanganan Eksepsi Pertemuan Ke- 9.
PERCABANGAN & PERULANGAN DALAM JAVA
BAB XI EXCEPTION HANDLING.
Array dan Argumen Baris Perintah
Dosen : Bella Hardiyana, S. Kom
Command line argument.
Tugas Minggu Ke 9 PBO Siti Halisah
Command line argument.
Constructor overloading
MEMBUAT CLASS SENDIRI 2.
Algoritma & Pemrograman 3
Exception Handling, Package, Abstract Class & Interface
BPJ – Pertemuan 13 OOP.
PEMROGRAMAN JAVA.
Pemrograman Berorientasi Obyek
Dasar exception handling
Modul 6: Abstract Class, abstract method
Pemrograman Berorientasi Objek
Mendapatkan Input dari Keyboard
DPH1C4 Pemrograman berorientasi Obyek
FONDASI PEMROGRAMAN & STRUKTUR DATA #3 - 4
Pada Bab sebelumnya, kita telah mendiskusikan bagaimana cara pendeklarasian berbagai macam variabel dengan menggunakan tipe data primitif. Dalam pendeklarasian.
Transcript presentasi:

09 Exceptions & File I/O OOP Java

Materi hari ini ExceptionsExceptions – Apa & kapan exception terjadi – Menangani exception – Menghindar (tidak menangani exception) File I/OFile I/O – Pengolahan file – Tulis data ke file – Baca data dari file

Dalam mengeksekusi program dapat terjadi banyak kejadian... File tidak adaFile tidak ada Server downServer down Sehebat apapun Anda jadi DEVELOPER, Anda tidak dapat mengontrol semuanyaSehebat apapun Anda jadi DEVELOPER, Anda tidak dapat mengontrol semuanya THINGS CAN GO WRONG !

Bugs dan Exceptional Bugs adalah kesalahan (error) yang disebabkan KODE saya yang tidak benar (salah sintaks, dll).Bugs adalah kesalahan (error) yang disebabkan KODE saya yang tidak benar (salah sintaks, dll).SEDANGKAN Exceptional adalah kesalahan (error) yang disebabkan oleh situasi yang TIDAK DAPAT DIGARANSI 100% OKE ketika program dijalankan (saat runtime)Exceptional adalah kesalahan (error) yang disebabkan oleh situasi yang TIDAK DAPAT DIGARANSI 100% OKE ketika program dijalankan (saat runtime)

Jadi... Ketika Anda mengkode sebuah method yang beresiko, Anda harus menulis kode untuk meng-handle bagaimana apabila BAD THINGS seperti di atas terjadi ?Ketika Anda mengkode sebuah method yang beresiko, Anda harus menulis kode untuk meng-handle bagaimana apabila BAD THINGS seperti di atas terjadi ?Pertanyaannya… Bagaimana saya tahu sebuah method itu BERESIKO ?Bagaimana saya tahu sebuah method itu BERESIKO ? Dan di mana saya menaruh kode untuk meng- handle situasi exceptional tersebut ?Dan di mana saya menaruh kode untuk meng- handle situasi exceptional tersebut ?

Seperti apa sih Situasi EXCEPTIONAL yang dimaksud ? Kode saya yang mengharapkan ADA FILE di DIREKTORI C:\JAVA, namun kenyataannya TIDAK ADA.Kode saya yang mengharapkan ADA FILE di DIREKTORI C:\JAVA, namun kenyataannya TIDAK ADA. Kode saya yang mengharapkan SERVER SUDAH RUNNING, namun kenyataannya TIDAK seperti yg diharapkan.Kode saya yang mengharapkan SERVER SUDAH RUNNING, namun kenyataannya TIDAK seperti yg diharapkan. Kode saya yang hendak membuat FILE BARU dengan nama Robinhood.java, namun kenyataannya sudah ADA file dg nama yg sama.Kode saya yang hendak membuat FILE BARU dengan nama Robinhood.java, namun kenyataannya sudah ADA file dg nama yg sama. Kode saya membutuhkan suatu OBJEK TERTENTU namun kenyataannya objek tersebut TIDAK TERSEDIAKode saya membutuhkan suatu OBJEK TERTENTU namun kenyataannya objek tersebut TIDAK TERSEDIA

Contoh Situasi Exceptional “Pembagian dengan NOL” str = cons.bacaString(); a = Integer.parseInt(str); str = cons.bacaString(); b = Integer.parseInt(str); c = a / b; //ada kemungkinan user memasukkan nilai 0 pada // variabel b

Contoh Situasi Exceptional : Tipe data yg diinput user tidak sesuai //file : AddArguments.java //note : tanpa exception handling, // error jika argumen bukan integer semua public class AddArguments { public static void main(String[] args) { int sum = 0; for (int i = 0; i <args.length; i++) { sum += Integer.parseInt(args[i]); } System.out.println("Sum = " + sum); }

Apa yang terjadi ketika method yang saya panggil (kemungkinan bukan saya yg tulis) BERESIKO ? Contoh saya mau memanggil SEBUAH METHOD di dalam kelas yang bukan saya tulisContoh saya mau memanggil SEBUAH METHOD di dalam kelas yang bukan saya tulis METHOD tersebut melakukan SESUATU yang BERESIKO, SESUATU yang mungkin TIDAK JALAN saat RUNTIMEMETHOD tersebut melakukan SESUATU yang BERESIKO, SESUATU yang mungkin TIDAK JALAN saat RUNTIME Saya harus TAHU bahwa METHOD yang dipanggil BERESIKOSaya harus TAHU bahwa METHOD yang dipanggil BERESIKO Sehingga saya dapat MENULIS KODE yang meng- handle BILA KEGAGALAN TERJADI.Sehingga saya dapat MENULIS KODE yang meng- handle BILA KEGAGALAN TERJADI. SIAP2 aja, SEDIA PAYUNG SEBELUM HUJAN!

METHOD di JAVA menggunakan exceptions untuk memberitahu kode yang memanggilnya bahwa, ”Something Bad Happened. Saya GAGAL mengatasinya ”

Bagaimana CARA untuk meng- handle KODE yang beresiko ? Caranya adalah dengan MEMBUNGKUS kode BERESIKO di dalam bentuk try/catchCaranya adalah dengan MEMBUNGKUS kode BERESIKO di dalam bentuk try/catch Contoh MEMBUNGKUS dengan bentuk try/catchContoh MEMBUNGKUS dengan bentuk try/catch public void play(){ public void play(){try{ //kode beresiko disini } catch(…) {//tangkap exceptionnya //penanganan jika terjadi kesalahan } } // close } // close

exception adalah sebuah objek... dari kelas Exception RuntimeException ThrowablegetMessage()printStackTrace() Exceptiontry{ // kode beresiko // kode beresiko } catch(Exception ex){ // try to recover // try to recover}

Yang PENTING adalah TAHU Method yang throws exception dan Method yang catch-nya public void takeRisk() throws BadException{ if(gagalSemua){ if(gagalSemua){ throw new BadException(); throw new BadException(); }}// public void crossFingers(){ try{ try{ anObject.takeRisk(); anObject.takeRisk(); } catch(BadException ex){ } catch(BadException ex){ System.out.println(“Aaargh!”); System.out.println(“Aaargh!”); ex.printStackTrace(); ex.printStackTrace(); } System.out.println(“We made it!”); }

Contoh Situasi Exceptional : Tipe data yg diinput user tidak sesuai (sudah ditangani) //file : AddArguments2.java //note : dengan exception handling public class AddArguments2 { public static void main(String[] args) { try { int sum = 0; for (int i = 0; i <args.length; i++) { sum += Integer.parseInt(args[i]); } System.out.println("Sum = " + sum); } catch (NumberFormatException nfe) { System.err.println("Salah satu argumen bukan integer!"); }

Contoh Situasi Exceptional : Tipe data yg diinput user tidak sesuai (sudah ditangani dg lebih baik) //file : AddArguments3.java //note : dengan exception handling yg lebih baik public class AddArguments3 { public static void main(String[] args) { int sum = 0; for (int i = 0; i <args.length; i++) { try { sum += Integer.parseInt(args[i]); } catch (NumberFormatException nfe) { System.err.println("Argumen ["+ args[i] + "] bukan integer!"); } System.out.println("Sum = " + sum); }

Kapan finally digunakan ? Kalau developer mau masak sesuatu pake kompor gas, maka developer memulainya dengan memutar tombol untuk menyalakan api di komporKalau developer mau masak sesuatu pake kompor gas, maka developer memulainya dengan memutar tombol untuk menyalakan api di kompor Kalau gas keluar tapi api tidak nyala (FAILURE), developer HARUS MEMADAMKANNYAKalau gas keluar tapi api tidak nyala (FAILURE), developer HARUS MEMADAMKANNYA Kalau api nyala (SUCCESS), selesai masak developer HARUS MEMADAMKANNYA jugaKalau api nyala (SUCCESS), selesai masak developer HARUS MEMADAMKANNYA juga Jadi kode di dalam blok finally HARUS DIJALANKAN MESKIPUN TERJADI EXCEPTION ATAU TIDAKJadi kode di dalam blok finally HARUS DIJALANKAN MESKIPUN TERJADI EXCEPTION ATAU TIDAK

Contoh penggunaan finally try{ turnKomporOn(); turnKomporOn(); x.masak(); x.masak(); } catch( MasakException ex ){ ex.printStackTrace(); ex.printStackTrace(); } finally{ turnKomporOff(); turnKomporOff();}

CelanaExceptionDalemanException Exception IOException PakaianException BajuException TShirtExceptionKemejaException

Sebaiknya Developer mengkode catch block yang berbeda untuk setiap exception yang perlu diperlakukan beda Bila ada blok catch lebih dari satu, maka blok catch harus diurutkan dari terkecil ke terbesar try{ laundry.doLaundry(); laundry.doLaundry(); } catch(TShirtException tex){ // silakan kode untuk TShirtException // silakan kode untuk TShirtException } catch(BajuException dex){ // silakan kode untuk DalemanException // silakan kode untuk DalemanException } catch(PakaianException pex){ // silakan untuk semua exception // silakan untuk semua exception}

Kalau ingin TIDAK menghandle, HINDARI SAJA... MENGHINDARI dengan cara MENDEKLARASIKAN exception tersebut public void foo() throws ReallyBadException{ // call risky method without a try/catch // call risky method without a try/catch laundry.doLaundry(); laundry.doLaundry();}