download

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