Anda di halaman 1dari 14

LECTURE NOTES

COMP6598
Introduction to Programming

Minggu 6
Sesi 10
Exception Handling

COMP6598 – Introduction to Programming


LEARNING OUTCOMES

1. LO1 : Peserta diharapkan dapat merancang dan menerapkan algoritma yang tepat
dalam menyelesaikan permasalahan

OUTLINE MATERI(Sub-Topic):

1. 3 Kinds of Errors

2. Exception handling

3. Exception types

4. Try and Catch

5. The finally clause

6. Exercise (Discussion Forum 6)

COMP6598 – Introduction to Programming


ISI MATERI

3 Jenis Error (3 Jenis Kesalahan)

Kesalahan yang terjadi dalam programming dapat dikelompokkan dalam tiga jenis yaitu
syntax error, runtime error dan logic error

Syntax Error

Merupakan error (kesalahan) yang terdeteksi oleh kompiler. error ini akibat dari
kesalahan dalam penulisan code, seperti kesalahan keyword, menghilangkan tanda baca yang
dibutuhkan, ataupun kurang kurung kurawal. Kesalahan ini mudah dideteksi, hal ini
dikarenakan kompiler akan memberitahu dimana kesalahan tersebut terjadi. Perhatikan
contoh berikut ini

Output :

Kesalahan dalam code diatas adalah :

 Kurangnya keyword void sebelum main


 Tulisan String Welcome to Java , seharusnya ditambahkan tanda petik dua penutup
(“) di akhir

Logic error

Merupakan error (kesalahan) yang terjadi ketika sebuah program tidak berjalan sesuai
dengan yang diinginkan. Perhatikan contoh dibawah ini

COMP6598 – Introduction to Programming


Kesalahan pada program diatas :

 Hasil yang didapatkan adalah 67 derajat Fahrenheit, yang sebenarnya adalah salah.
Hasil yang seharusnya didapatkan adalah 95.0
 Kesalahan tersebut dikarenakan pembagian bilangan integer adalah sebuah integer,
sehingga hasil 9/5 menjadi 1, padahal hasil yang diinginkan adalah 1.8, oleh karena
itu seharusnya angka yang digunakan adalah 9.0 / 5.

Runtime Error

Runtime error terjadi ketika JVM mendeteksi adanya operasi pada program berjalan
tidak dapat dilanjutkan. Sebagai contoh disaat program akan mengakses array yang memiliki
index lebih besar dari yang sudah dideklarasikan, maka sebuah runtime error akan terjadi
dengan tipe exception adalah ArithmeticException. Perhatikan contoh berikut ini

Kesalahan pada program diatas adalah :

 Pembagi bilangan tersebut adalah nol sehingga tidak dapat dihitung hasilnya.

Exception handling

Dalam java, runtime error akan menghasilkan exception. Exception adalah sebuah object
yang menyampaikan adanya error ataupun kondisi yang menghalangi program berjalan
secara normal. Apabila exception tersebut tidak ditangani, maka program akan berhenti.

COMP6598 – Introduction to Programming


Exception handling memungkinkan program mengatasi exception tersebut dan tetap
meneruskan program tersebut dijalankan. Penanganan exception ini biasa dikenal dengan
nama exception handling.

Perhatikan contoh berikut ini :

Output

Program diatas menghasilkan exception berupa ArithmeticException, hal ini


dikarenakan sebuah integer tidak dapat dibagi dengan nol. Permasalahan di atas dapat
diselesaikan dengan dua cara yaitu yang pertama dengan menambahkan IF dan cara yang
kedua adalah menggunakan try and catch.

Pada cara yang pertama, program akan memeriksa nilai dari variabel number2, Apabila
bernilai nol maka akan masuk ke dalam statement setelah else yaitu mencetak tulisan
“Divisor cannot be zero ”

COMP6598 – Introduction to Programming


Perhatikan contoh berikut ini (cara pertama dengan menambahkan IF)

Output

Pada cara yang kedua dibawah ini menggunakan try dan catch. Saat menjalankan
statement result = number1/number2 (baris 12) maka ArithmeticException terjadi dan
selanjutnya berpindah ke blok catch. Perintah di dalam blok catch akan dijalankan dan
menampilkan tulisan “Exception : an integer cannot be divided by zero” (baris ke 15)

Perhatikan contoh dibawah ini (menggunakan try and catch)

COMP6598 – Introduction to Programming


Output

Tipe – Tipe Exception

Exception merupakan object dan object didefinisikan dengan menggunakan class. Class
utama dari exception adalah java.lang.Throwable. Ada banyak class exception yang dapat
langsung digunakan pada Java API.

(Sumber : Y. Daniel Lang , Introduction to Java Programming, p.524)

Throwable class adalah class utama dari exception. Semua exception class mewarisi
secara langsung ataupun tidak langsung dari class Throwable. Programmer juga dapat
membuat sendiri class exception dengan memodifikasi exception atau subclass dari exception
class yang ada.

Exception class sendiri dapat dikategorikan dalam tiga tipe yaitu :

 System error : error ini dikeluarkan oleh JVM dan terdapat dalam class Error. Class
error ini menyampaikan adanya error dalam system internal.

COMP6598 – Introduction to Programming


Class Sebab terjadinya exception
LinkageError Ketika sebuah class mempunyai ketergantungan pada class
lain, namun class kedua tersebut berubah setelah dilakukan
kompilasi pada class pertama
VirtualMachineError JVM tidak berfungsi atau tidak memiliki cukup sumber daya
yang dibutuhkan untuk melanjutkan operasi

 Exception : terdapat dalam class Exception, yang menjelaskan bahwa error


disebabkan oleh program yang dibuat ataupun oleh kondisi external. Error jenis ini dapat
ditangani oleh program itu sendiri.
Class Sebab terjadinya exception
ClassNotFoundException Terjadi karena program mencoba akses ke class yang
tidak ada. Contoh, Apabila sebuah program memiliki 3
file class, tetapi hanya ada dua yang bisa ditemukan.
IOException Exception yang berhubungan dengan operasi input /
output, seperti input yang salah ataupun membaca file
yang tidak ada.

 Runtime Exception : terdapat dalam class RuntimeException yang disebabkan adanya


kesalahan dalam program. RuntimeException biasanya dikeluarkan oleh JVM.

Class Sebab terjadinya exception


ArithmeticException Disebabkan karena membagi sebuah bilangan integer
dengan nol.
NullPointerException Disebabkan karena berusaha mengakses sebuah
object melalui sebuah null reference variabel
IndexOutOfBoundsException Terjadi karena index ke sebuah array diluar jangkauan
/ rentang
IllegalArgumentException Disebabkan karena sebuah method diberikan sebuah
argument yang tidak benar / tidak tepat

COMP6598 – Introduction to Programming


RuntimeException, Error dan subclassnya biasa disebut dengan unchecked exception.
Sedangkan exception lain dikenal dengan checked exception. Unchecked exception berarti
bahwa kompiler dipaksa oleh programmer untuk memeriksa dan menangani error tersebut
dalam blok try-catch atau mendeklarasikannya pada judul method. Unchecked exception
dapat juga karena adanya logic error yang tidak ditangani.

Exception handling

Exception handling di Java terdiri atas tiga operasi : declaring an exception, throwing an
exception, dan cacthing an exception

Gambar Exception Handling in JAVA


(sumber : Y. Daniel Liang. (2013). Introduction to Java Programming, ed. 9)

Declaring exception

Dalam Java, setiap statement yang dijalankan adalah milik dari sebuah method. Program
akan dimulai dari main method. Setiap method harus menuliskan tipe dari checked exception
yang mungkin akan dikeluarkan. Hal ini disebut dengan declaring exception. Dikarenakan
system error dan runtime error dapat terjadi pada code mana saja, maka JAVA tidak
membutuhkan deklarasi Error dan RuntimeException (unchecked exception) secara
eksplisit di method.

Namun, exception yang lain harus dideklarasikan pada judul method sehingga modul yang
memanggil method mendapatkan informasi akan exception tersebut.

COMP6598 – Introduction to Programming


Untuk mendeklarasikan sebuah exception pada method maka gunakan keyword throws
pada judul method. Dari contoh berikut menerangkan bahwa ada kemungkinan myMethod
akan mengeluarkan sebuah IOException.

public void myMethod() throws IOException

Apabila method ingin mengeluarkan lebih dari satu exception maka setiap exception
dipisahkan dengan koma setelah keyword throws

public void myMethod()


throws Exception1, Exception2, …, ExceptionN

Throwing Exception

Sebuah program yang mendeteksi error dapat membuat sebuah exception yang tepat dan
mengirimkannya. Hal ini dikenal dengan throwing an exception. Perhatikan contoh berikut
yang menyatakan bahwa adanya kesalahan dalam argument yang dikirimkan ke method
(misalnya saja nilai yang dikirimkan seharusnya tidak negative , tetapi ternyata yang terkirim
adalah nilai negative) , maka program dapat membuat IllegalArgumentException sebagai
berikut :

Atau dapat juga dituliskan sebagai berikut :

Catching Exception

Salah satu cara untuk menangkap ataupun menangani exception adalah menggunakan
block try-catch sebagai berikut :

COMP6598 – Introduction to Programming


try {
statements; //statements
} catch (Exception1 exVar1){
handler for exception1;
}catch (Exception2 exVar2){
handler for exception2;
}
……
catch (ExceptionN exVarN){
handler for exception;
}

Apabila ternyata tidak terjadi exception, maka block catch akan dilewatkan. Namun
Apabila ada salah satu dari statement di dalam block try menghasilkan exception, maka
statement berikutnya di dalam block try akan dilewatkan dan masuk ke dalam proses mencari
code yang menangani exception tersebut. Code yang menangani exception disebut dengan
exception handler.

Cara kerjanya adalah dimulai dengan menelusuri setiap blok catch yang ada satu persatu,
untuk melihat apakah ada exception yang sesuai. Apabila tidak ditemukan handler maka
program akan dihentikan dan pesan error akan muncul. Proses menemukan handler ini
disebut dengan catching an exception.

Finally

Finally selalu dijalankan tanpa melihat apakah exception terjadi atau tidak. Penulisan
Finally adalah sebagai berikut
try {
statements;
}
catch (TheException ex) {
handling ex;
}
finally {
finalStatements;
}

COMP6598 – Introduction to Programming


Code di dalam blok finally akan dijalankan dalam keadaan apapun juga, tanpa melihat apakah
terjadi exception atau tidak. Pada contoh berikut ini terlihat bahwa statement setelah finally
yaitu “Thank you” tetap dijalankan walaupun terjadi exception

Output:

Keuntungan dan Kerugian dari Try and Catch

Kerugian try and catch:


 Membutuhkan waktu yang lebih lama
 Membutuhkan memory yang lebih banyak
 Membutuhkan pencarian handler

Keuntungan try and catch:


 Menangani error yang rumit
 Mudah dibaca dan dimodifikasi
 Catch complex error

COMP6598 – Introduction to Programming


SIMPULAN

Pada pemrograman pada umumnya telah mendukung operasi – operasi Exception


Handling.

Exception Handling merupakan operasi yang sangat penting dan wajib diterapkan
dalam pengembangan aplikasi yang berperan untuk menangkap dan menangani error yang
terjadi selama program dijalankan. Pada penerapannya dibutuhkan beberapa klausa sebagai
struktur utamanya, yakni try, catch, dan finally.

COMP6598 – Introduction to Programming


DAFTAR PUSTAKA

1. Y. Daniel Liang. (2013). Introduction to Java Programming :Comprehensive Version.


International Edition. 09. Pearson Education. New Jersey.

2. http://www.javabeginner.com/java-exceptions.htm

3. https://docs.oracle.com/javase/tutorial/essential/exceptions/handling.html

4. https://docs.oracle.com/javase/tutorial/essential/exceptions/try.html

5. https://docs.oracle.com/javase/tutorial/essential/exceptions/catch.html

6. https://docs.oracle.com/javase/tutorial/essential/exceptions/finally.html

7. http://www.javatpoint.com/finally-block-in-exception-handling

COMP6598 – Introduction to Programming

Anda mungkin juga menyukai