1 / 20

09 Exceptions & File I/O

09 Exceptions & File I/O. OOP Java. Materi hari ini. Exceptions Apa & kapan exception terjadi Menangani exception Menghindar (tidak menangani exception) File I/O Pengolahan file Tulis data ke file Baca data dari file. Dalam mengeksekusi program dapat terjadi banyak kejadian.

cassie
Télécharger la présentation

09 Exceptions & File I/O

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 09 Exceptions & File I/O OOP Java

  2. Materi hari ini • Exceptions • Apa & kapan exception terjadi • Menangani exception • Menghindar (tidak menangani exception) • File I/O • Pengolahan file • Tulis data ke file • Baca data dari file

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

  4. Bugs dan Exceptional • 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)

  5. Jadi ... • 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 ? • Dan di mana saya menaruh kode untuk meng-handle situasi exceptional tersebut ?

  6. 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 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 membutuhkan suatu OBJEK TERTENTU namun kenyataannya objek tersebut TIDAK TERSEDIA

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

  8. 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); } }

  9. 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 tulis • METHOD tersebut melakukan SESUATU yang BERESIKO, SESUATU yang mungkin TIDAK JALAN saat RUNTIME • Saya harus TAHU bahwa METHOD yang dipanggil BERESIKO • Sehingga saya dapat MENULIS KODE yang meng-handle BILA KEGAGALAN TERJADI. SIAP2 aja, SEDIA PAYUNG SEBELUM HUJAN!

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

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

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

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

  14. 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!"); } } }

  15. 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); } }

  16. Kapan finally digunakan ? • Kalau 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 MEMADAMKANNYA • Kalau api nyala (SUCCESS), selesai masak developer HARUS MEMADAMKANNYA juga • Jadi kode di dalam blok finally HARUS DIJALANKAN MESKIPUN TERJADI EXCEPTION ATAU TIDAK

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

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

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

More Related