OPERASI JUMP DAN EXCEPTION HANDLING Matakuliah : T0974 / Algoritma dan Metode Object Oriented Programming I Tahun : 2008 Versi : 1/0
Pada akhir pertemuan ini, diharapkan mahasiswa akan mampu: Learning Outcomes Pada akhir pertemuan ini, diharapkan mahasiswa akan mampu: Menjelaskan pengertian operasi jump Menerapkan penulisan program dengan operasi jump Menjelaskan pengertian exception handling Menerapkan penulisan program dengan exception handling Bina Nusantara
Operasi label pada break Operasi label pada continue Outline Materi Definisi Operasi Jump Operasi break Operasi continue Operasi label pada break Operasi label pada continue Definisi Exception Handling try and catch finally Bina Nusantara
Kontrol tambahan pada perulangan 3 operasi jump: break: berhenti (dan keluar) dari perulangan terdalam, umumnya digunakan bersamaan if continue: berhenti (tidak keluar) dari perulangan saat itu, umumnya digunakan bersamaan if label: mengontrol tempat keluar untuk break dan continue break telah digunakan pada switch-case Bina Nusantara
break Contoh: Saat j==2, eksekusi keluar dari perulangan terdalam for(int i=1; i<=3; i++) { for(int j=1; j<=3; j++) if(j==2) break; System.out.println("i="+i+" dan j="+j); } Saat j==2, eksekusi keluar dari perulangan terdalam Nilai j==2, dan j==3 tidak dicetak Perulangan dilanjutkan di i++ Bina Nusantara
break Bina Nusantara
continue Contoh: Saat j==2, eksekusi tidak keluar dari perulangan for(int i=1; i<=3; i++) { for(int j=1; j<=3; j++) if(j==2) continue; System.out.println("i="+i+" dan j="+j); } Saat j==2, eksekusi tidak keluar dari perulangan Statement berikutnya diabaikan Nilai j==2 (statement berikutnya) tidak dicetak Perulangan dilanjutkan di j++ Nilai j==3 (statement berikutnya) dicetak Bina Nusantara
continue Bina Nusantara
Label break Contoh: outerA: for(int i=1; i<=3; i++) { innerA: for(int j=1; j<=3; j++) if(j==2) break outerA; System.out.println("i="+i+" dan j="+j); } Saat j==2, eksekusi keluar dari perulangan menuju outerA Perulangan tidak dilanjutkan baik di i++ ataupun j++ Bina Nusantara
Label dideklarasikan sebelum break Label break Label dideklarasikan sebelum break Label diakhiri dengan titik dua ( : ) Pada contoh di atas: Jika break outerA diganti dengan break innerA, maka sama dengan break tanpa label break outerA perulangan i++ tidak dilanjutkan dan mengeksekusi statement setelah perulangan i++ Bina Nusantara
Label break Bina Nusantara
Label continue Contoh: outerB: for(int i=1; i<=3; i++) { innerB: for(int j=1; j<=3; j++) if(j==2) continue outerB; System.out.println("i="+i+" dan j="+j); } Saat j==2, eksekusi keluar dari perulangan menuju outerB Perulangan i++ dilanjutkan Bina Nusantara
Label dideklarasikan sebelum continue Label continue Label dideklarasikan sebelum continue Label diakhiri dengan titik dua ( : ) Pada contoh di atas: Statement continue outerB memiliki arti sama dengan break tanpa label Jika continue outerB diganti dengan continue innerB, maka sama dengan statement continue tanpa label continue outerB perulangan j++ tidak dilanjutkan dan kembali ke perulangan i++ Bina Nusantara
Label continue Bina Nusantara
break, continue, dan label Bina Nusantara
break, continue, dan label Bina Nusantara
break, continue, dan label Bina Nusantara
Exception Handling 3 jenis error: Runtime errors : exception Syntax errors (compile errors) melanggar aturan sintaks bahasa pemrograman, ditemukan saat kompilasi oleh kompiler Logic errors (bug) kesalahan logika, menghasilkan output/performa yang menyimpang Runtime errors operasi yang salah saat eksekusi program, program berakhir Runtime errors : exception Exception menyebabkan program terminate (berakhir) Contoh: Nasabah A mentransfer uang ke rekening nasabah B, saat rekening A berkurang dan rekening B belum bertambah, terjadi exception dan program terminate. Nasabah A kehilangan uang. Bina Nusantara
Exception Handling Menangkap/penanganan runtime errors (exception handling) Menggunakan try and catch Jenis kesalahan yang umum terjadi: Inputan yang salah Aritmetika (pembagian dengan nol) Melewati batas array yang dipesan Object yang belum diinisialisasi Jika kesalahan tidak ditangani/ditangkap (catch), maka kesalahan akan diteruskan ke penanganan berikutnya Kesalahan yang tidak ditangani akan menyebabkan program berakhir Bina Nusantara
Exception Handling Bina Nusantara
ExceptionDemo.main(ExceptionDemo.java:11) kesalahan ada di baris 11 Exception Handling Pesan errors: Exception in thread "main" java.util.InputMismatchException at java.util.Scanner.throwFor(Scanner.java:840) at java.util.Scanner.next(Scanner.java:1461) at java.util.Scanner.nextInt(Scanner.java:2091) at java.util.Scanner.nextInt(Scanner.java:2050) at ExceptionDemo.main(ExceptionDemo.java:11) ExceptionDemo.main(ExceptionDemo.java:11) kesalahan ada di baris 11 Progam berakhir (terminate) dan statement berikutnya tidak dijalankan Bina Nusantara
Exception Handling Bina Nusantara
Exception Handling Statement yang bisa menyebabkan exception berada pada lingkup try Exception ditangkap ada lingkup catch Statement pada lingkup catch merupakan operasi yang dilakukan jika terjadi exception Exception ditangkap pada catch(Exception e) Setelah catch, maka program kembali normal Statement berikutnya akan berjalan normal Bina Nusantara
Exception Handling Bina Nusantara
Exception Handling Bina Nusantara
Exception Handling Pada: try { kata[100]='a'; } Maka hasil exception merupakan ArrayIndexOutOfBoundsException, sehingga tidak akan masuk ke ArithmeticException Jika ArrayIndexOutOfBoundsException tidak dideklarasikan, maka akan masuk ke Exception Exception merupakan jenis umum letakkan diakhir Bina Nusantara
Mencetak pesan kesalahan: Exception Handling Mencetak pesan kesalahan: catch(Exception e) { … } System.out.println(e); e.printStackTrace(); Hasil output: Bina Nusantara
Inputan salah pada Scanner menyebabkan exception Contoh: Exception Handling Inputan salah pada Scanner menyebabkan exception Contoh: bilangan = input.nextInt(); Jika inputan bukan bilangan bulat, maka Scanner akan menghasilkan exception Scanner perlu diinisialisasi ulang pada catch agar dapat menerima inputan lagi Bina Nusantara
Exception Handling Bina Nusantara
Exception Handling Bina Nusantara
Operasi jump (break dan continue) hanya pada label yang terjangkau Did You Know? Operasi jump (break dan continue) hanya pada label yang terjangkau Contoh: Bina Nusantara
break hanya dapat pada outerA atau innerA Did You Know? break hanya dapat pada outerA atau innerA Tidak dapat ke outerB atau innerB karena dideklarasikan di bawah continue hanya dapat pada outerB atau innerB Tidak dapat ke outerA atau innerA karena tidak pada area jangkauan Bina Nusantara
Advanced Learning Statement dapat dieksekusi walaupun terjadi exception Keyword: finally Sintaks: try { tryStatements; } catch(Exception e) handling ex; finally finalStatements; Bina Nusantara
Advanced Learning Statements pada finally akan dieksekusi: Tidak terjadi exception Terjadi exception pada statements try, dan exception di-catch Terjadi exception pada statements try, dan exception tidak di-catch finally dapat dideklarasikan tanpa catch Deklarasi try perlu disertakan dengan catch atau finally Contoh: try { … } finally Bina Nusantara
Advanced Learning Bina Nusantara
Advanced Learning try and catch sebaiknya untuk penanganan kesalahan yang tidak diharapkan Jangan gunakan jika dapat ditangani manual Contoh: if(pembagi==0) System.out.println(“Pembagi tidak boleh nol”); else hasil = bilangan / pembagi; Akan lebih baik daripada: try { } catch(Exception e) System.out.println(“Kesalahan pembagian”); Bina Nusantara
Kerugian try and catch: Advanced Learning Kerugian try and catch: Memerlukan waktu lebih saat dieksekusi Memerlukan memori yang lebih banyak Memerlukan pencarian handler Keuntungan try and catch: Menangkap kesalahan yang kompleks Mudah untuk dibaca dan dimodifikasi Bina Nusantara
Referensi Introduction to Java Programming. 7ed. Liang. 2009. p150-155, ch 18 The Complete Reference. 5ed. Herbert Schildt. 2005. ch 10 Dasar Pemrograman Java 2. 2004. Abdul Kadir. Ch 14 Operasi Jump: http://www.java2s.com/Code/Java/Language-Basics/ContinueWithLabelDemo.htm http://www.java2s.com/Code/Java/Language-Basics/BreakWithLabelDemo.htm Exception Handling: http://java.sun.com/docs/books/tutorial/essential/exceptions/index.html http://www.javabeginner.com/java-exceptions.htm http://rotterdam.ics.uci.edu/info/ExceptionHandler.htm Bina Nusantara