OPERASI JUMP DAN EXCEPTION HANDLING Matakuliah Tahun Versi : T0974 / Algoritma dan Metode Object Oriented Programming I : 2008 : 1/0 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 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 Operasi Jump • 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: 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: 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 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 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: – 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 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.jav a: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 Exception Handling • Mencetak pesan kesalahan: catch(Exception e) { … } – System.out.println(e); – e.printStackTrace(); • Hasil output: System.out.println(e); e.printStackTrace(); Bina Nusantara 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 Did You Know? • Operasi jump (break dan continue) hanya pada label yang terjangkau • Contoh: Bina Nusantara 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 { hasil = bilangan / pembagi; } catch(Exception e) { System.out.println(“Kesalahan pembagian”); } Bina Nusantara 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/LanguageBasics/ContinueWithLabelDemo.htm – http://www.java2s.com/Code/Java/LanguageBasics/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
© Copyright 2024 Paperzz