DASAR TEORI
1. Exception Handling
Exception adalah event yang terjadi ketika program menemui kesalahan pada saat instruksi
program dijalankan. Banyak hal yang dapat menimbulkan event ini, misalnya crash, harddisk rusak
dengan tiba-tiba, sehingga program-program tidak bisa mengakses file-file tertentu. Programmer
pun dapat menimbulkan event ini, misalnya dengan melakukan pembagian dengan bilangan nol,
atau pengisian elemen array melebihi jumlah elemen array yang dialokasikan, dan sebagainya.
Exception terdiri dari dua macam kelompok, yaitu: a) Exception yang merupakan subclass
RunTimeException; b) Exception yang bukan subclass RunTimeException. RunTimeException
biasanya disebabkan oleh kesalahan program atau pada desain program, misalnya
NullPointerException yang disebabkan oleh proses inisialisasi program yang tidak sempurna dan
ArrayIndexOutOfBoundsException yang disebabkan akses array yang melebihi kapasitas array
yang ada.
Dalam bahasa Java, ketika terjadi kesalahan otomatis akan dilemparkan sebuah objek yang
disebut exception, yang kemudian dapat diproses lebih lanjut oleh fungsi-fungsi yang siap
menangani kesalahan tersebut. Proses pelemparan exception tersebut sering dikenal dengan istilah
throwing exception, sedangkan proses penerimaan exception yang bersangkutan dikenal dengan
istilah catch exception. Terdapat beberapa subclass yang diturunkan dari kelas exception, yaitu:
ClassNotFoundException
Terjadi bila ingin menggunakan kelas yang tidak ada atau belum dibuat.
CloneNotSupportedException
Terjadi bila ingin menggandakan suatu kelas yang tidak didukung oleh method clone.
1
S1 Pend. Teknik Informatika 2014 OFF B
RuntimeException
NullPointerException
ArrayIndexOutOfBoundsException
ArithmeticException
Khusus untuk operasi aritmatika integer, seperti pembagian suatu bilangan integer dengan 0
IOException
Terjadi bila ada I/O error, seperti gagal menemukan dan membuka file atau user
memasukkan input yang tidak valid. Subclass ini memiliki beberapa subclass lain, seperti
InterruptedIOException, EOFException, serta FileNotFoundException.
2
S1 Pend. Teknik Informatika 2014 OFF B
3. Operasi pada Exception Handling
Exception juga memiliki operasi-operasi exception. Adapun operasi exception dibagi
menjadi tiga buah operasi, yaitu:
Claiming an exception dimaksudkan dengan menyatakan exception apa saja yang mungkin
terjadi dalam suatu main() ataupun dalam method. Untuk system errors dan runtime errors
tidak perlu dilakukan klaim karena kedua macam kesalahan ini dapat terjadi di mana saja.
Untuk melakukan claiming an exception dilakukan dengan menggunakan throws
keyword. Contoh:
public void myMethod() throws IOException
{
...
}
untuk melakukan klaim terhadap banyak exception dapat dilakukan dengan menambahkan
exception dipisahkan dengan koma ( , ). Contoh:
method_declaration throws Exception1, Exception2, ...Exception n
Throwing an exception dimaksudkan dengan apabila suatu kesalahan terjadi maka method
berisi statement yang melakukan claiming an exception tersebut membuat suatu exception
object yang dilempar ke dalam sistem. Untuk melakukan throwing exception kita
menggunakan keyword throw di dalam method yang telah melakukan claim exception.
Contoh:
throw ExceptionObjectInstance;
main
Runtime system mencari method yang memiliki blok untuk terjadi berdasarkan call stack.
Pencarian dimulai dari tempat terjadinya error kemudian diruntut berdasarkan call stack secara
reverse order. Jika ditemukan blok untuk menangani error yang bersangkutan, maka sistem akan
menyerahkan exception ke handler. Penyerahan exception ini disebut sebagai catch the exception
(menangkap exception). Jika sistem tidak menemukan handler yang sesuai di call stack, maka
runtime system akan menghentikan jalannya program.
Untuk memahami bagaimana exception handling bekerja di java, jadi kita harus memahami
kategori-kateogori exception, adapun kategori-kategori exception adalah sebagai berikut:
Checked Exceptions
Checked exceptions merupakan exception yang disebabkan oleh kesalahan pemakai program
atau hal lain yang dapat diprediksi oleh pemrograman.
Runtime Exception
Runtime exception adalah exception yang muncul dimana kemunculannya tidak bisa
dihindari oleh pemrograman. Runtime exception biasanya disebabkan oleh kesalahan
program atau pada desain program.
Errors
Error sebenarnya bukan exception, namun merupakan masalah yang muncul di luar kendali
pemakai dan pemrogram. Error secara umum akan dibiarkan saja, sebab tidak ada yang bisa
4
S1 Pend. Teknik Informatika 2014 OFF B
dilakukan untuk mengatasinya. Misalnya, jika stack overflow muncul maka error akan
muncul. Adapun jenis-jenis error yaitu:
1. Syntax error
Syntax Error merupakan suatu kesalahan dari penulisan syntax pada program
sehingga syntax tersebu tidak dapat dieksekusi oleh program yang pasti membuat
program tersebut error.
2. Logical Error
Logical Error adalah sutau kesalahan yang disebabkan oleh si programmer sendiri,
hal ini disebabkan oleh kesalahan penulisan atau rumus yang diterapkan oleh si
programmer.
3. Runtime Error
Error yang satu ini tergolong error yang unik, karena error ini akibat dari
kecerobohan seorang programmer itu sendiri. Error ini akan muncul apabila terjadi
miskomunikasi antara program dan di file yang dipanggil dalam program.
5. Hierarki Exception
Semua kelas exception adalah subclass dari java.langException. Kelas exception sendiri
merupakan kelas turunan dari kelas Throwable. Selain kelas exceptiom, ada juga kelas error yang
juga diturunkan dari kelas Throwable.
Normalnya, Error jarang dibuat objectnya pada Java. Kondisi ini bisa muncul karena
masalah yang tidak dapat ditangani oleh program java, misalnya JVM kehabisan memori. Untuk
kasus ini program tidak akan dapat menangani error yang terjadi. Kelas exception memiliki dua
subclass utama yaitu IOException dan RuntimeException.
Object
5
S1 Pend. Teknik Informatika 2014 OFF B
Throwable di java.lang.object
Error Exception
7
S1 Pend. Teknik Informatika 2014 OFF B
b) Multiple Catch
Untuk multiple catch akan kita gunakan jika blok try mungkin menimbulkan lebih dari satu
exception. Sintaks blok multiple catch adalah sebagai berikut:
try
{
instruksi-1
instruksi-2
instruksi-3
diabaikan
instruksi-n
}
catch(tipe_eksepsi_1 e1)
{
}
catch(tipe_eksepsi_2 e2)
{
}
catch(tipe_eksepsi_3 e3)
{
}
.
catch(tipe_eksepsi_n en)
{
}
instruksi-lain
.
8
S1 Pend. Teknik Informatika 2014 OFF B
//tulis aksi apa dari program Anda yang dijalankan jika ada
//exception tipe tertentu terjadi
}
. . .
catch( )
{
//tulis aksi apa dari program Anda yang dijalankan jika ada
//exception tipe tertentu terjadi
}
Finally
{
//tambahkan kode terakhir di sini
}
Exception dilemparkan selama eksekusi dari blok try dapat ditangkap dan ditangani dalam
blok catch. Kode dalam blok finally selalu di-eksekusi. Berikut ini adalah aspek kunci tentang
sintak dari konstruksi try-catch-finally:
Notasi blok bersifat perintah.
Setiap blok try, terdapat satu atau lebih blok catch, tetapi hanya satu blok finally.
Blok catch dan blok finally harus selalu muncul dalam konjungsi dengan blok try, dan di
atas urutan.
Blok try harus diikuti oleh paling sedikit satu blok catch atau satu blok finally, atau
keduanya.
Setiap blok catch mendefinisikan sebuah penanganan exception. Header dari blok catch
harus membawa satu argumen, dimana exception pada blok tersebut akan ditangani.
Exception harus menjadi class pelempar atau satu dari subclassesnya.
Try-catch yang menggunakan finally maka keyword finally tersebut fungsinya hampir sama
dengan keyword default pada switch-case.
9
S1 Pend. Teknik Informatika 2014 OFF B
Bila exception terjadi, namun tidak ada catch yang sesuai, maka statement statemenet try
berikutnya yang masih tersisa tidak akan dieksekusi. Selanjutnya, interpreter akan
mengeksekusi blok finally.
10
S1 Pend. Teknik Informatika 2014 OFF B
LATIHAN 1
Kode Program
Hasil Eksekusi
Deskripsi program :
Program di atas merupakan contoh program yang menunjukkan adanya kesalahan
(exception) pada program. Pada program ini, letak kesalahan dideteksi menggunakan
exception handling try catch. Blok try digunakan untuk menempatkan kode program atau
kondisi yang berpotensi error, sedangkan blok catch digunakan untuk menangkap exception
program yang terdapat pada blok try.
Pada program ini, exception terletak pada pembagian bilangan dengan 0 (nol). Jika
dihitung secara aritmatika, pembagian bilangan dengan 0 akan menimbulkan error, karena
memiliki hasil tak terhingga (~), sehingga output yang dihasilkan adalah berupa jenis
exception (yaitu java.lang.ArithmeticException: / by zero atau pembagian dengan nol) dan
pernyataan setelah exception, yaitu Setelah exception.
11
S1 Pend. Teknik Informatika 2014 OFF B
LATIHAN 2
Kode Program
Hasil Eksekusi
Deskripsi program :
Program di atas merupakan contoh program yang menerapkan exception handling
jenis multiple catch. Pada program ini terdapat beberapa catch dengan beberapa jenis
exception, antara lain.
1. ArrayIndexOutOfBoundsException, apabila indeks array di luar batas.
2. NullPointerException, keadaan di mana penggunaan null yang tidak sah.
3. Exception, induk dari semua classes exception.
Pada program ini, kesalahan yang ditimbulkan adalah dikarenakan pembagian
bilangan dengan nol, di mana operasi ini memiliki hasil tak terhingga dan merupakan
operasi yang tidak dapat diselesaikan dalam operasi aritmatika. Kesalahan tersebut termasuk
jenis Arithmetic Exception, sehingga tidak akan ditangkap oleh kedua catch di atas
(ArrayIndexOutOfBoundsException dan NullPointerException), melainkan akan ditangkap
oleh catch Exception yang kemudian akan menampilkan kalimat Exception e.
12
S1 Pend. Teknik Informatika 2014 OFF B
LATIHAN 3
Kode Program
Hasil Eksekusi
Deskripsi program :
Program di atas merupakan contoh program yang menggunakan jenis exception
handling try catch finally. Blok try berisi kode program yang memungkinkan terjadinya
exception, blok catch digunakan untuk menangkap exception yang terjadi pada blok try, dan
blok finally berisi kode program yang akan selalu dijalankan baik itu terjadi exception
maupun tidak terjadi exception.
Exception yang terjadi pada program di atas disebabkan oleh jumlah array yang
dimasukkan (3) melebihi batas array yang telah ditentukan (2), sehingga exception
ditangkap oleh catch sebagai ArrayIndexOutOfBoundsException untuk ditampilkan bersama
pernyataan pada blok finally.
13
S1 Pend. Teknik Informatika 2014 OFF B
LATIHAN 4
Kode Program
Hasil eksekusi
Deskripsi program :
Program di atas merupakan contoh program yang menunjukkan penggunaan keyword
throw untuk melemparkan exception yang terjadi. Pada program di atas menggunakan dua
jenis exception handling, yaitu NullPointerException dan Arithmetic Exception sebagai kelas
yang dirujuk throw untuk menangani exception. Kesalahan yang terjadi disebabkan oleh
penggunaan null yang tidak valid, sehingga ditangkap oleh catch sebagai jenis exception
NullPointerException, di mana exception tersebut ditampilkan menggunakan perintah
getMessage().
14
S1 Pend. Teknik Informatika 2014 OFF B
LATIHAN 5
Kode Program
15
S1 Pend. Teknik Informatika 2014 OFF B
Hasil eksekusi
Deskripsi program :
Program di atas tidak jauh berbeda dengan program sebelumnya. Pada program ini,
setiap data Mahasiswa tidak boleh bernilai null. Oleh karena itu, digunakan
NullPointerException untuk menangani hal tersebut. Dikarenakan tidak ada data yang tidak
diisi, maka program berjalan secara normal dengan menampilkan NIM, Nama dan Nilai
mahasiswa yang telah diinputkan tanpa adanaya exception yang terdeteksi.
16
S1 Pend. Teknik Informatika 2014 OFF B
LATIHAN 6
Kode Program
Hasil eksekusi
Deskripsi program :
Program di atas merupakan contoh program yang menerapkan keyword throws
sebagai tindakan preventif apabila memungkinkan terjadinya exception pada data yang
diinputkan. Pada program ini menggunakan metode InputStreamReader untuk
menginputkan data, sehingga harus mengimpor librarynya terlebih dahulu, yaitu java.io.*.
Dikarenakan tidak ada kesalahan dari inputan pada contoh di atas, maka tidak ada exception
yang terdeteksi dan program berjalan dengan normal.
17
S1 Pend. Teknik Informatika 2014 OFF B
LATIHAN 7
Kode Program
Hasil eksekusi
Deskripsi program :
Program di atas merupakan contoh program yang menerapkan keyword throws
sebagai tindakan preventif apabila memungkinkan terjadinya exception pada data yang
diinputkan. Pada program ini menggunakan metode InputStreamReader untuk
menginputkan data, sehingga harus mengimpor librarynya terlebih dahulu, yaitu java.io.*.
Program ini berbeda dengan program sebelumnya. Pada program ini, pada awalnya inputan
bilangan dinyatakan bertipe String. Namun, selanjutnya inputan dikonversi menjadi
bilangan dengan tipe data double di dalam blok try, sehingga apabila yang diinputkan adalah
karakter (kata-kata), maka akan menimbulkan exception yang akan ditangkap oleh catch
yang mengidentifikasi exception sebagai NumbeFormatException.
18
S1 Pend. Teknik Informatika 2014 OFF B
TUGAS PRAKTIKUM 1
Program Login dengan Exception Handling
Kode Program
File Kesalahan.java
File Login.java
19
S1 Pend. Teknik Informatika 2014 OFF B
Hasil eksekusi
Deskripsi program :
Program di atas merupakan contoh program yang mendeteksi adanya exception tanda
baca. Pada program ini, programmer membuat exception sendiri, yaitu Kesalahan yang
menuruni dari class Exception. Pada class Login terdapat method verifikasiLogin(String u,
String p) yang melemparkan exception ke Kesalahan, di mana exception di dalam method ini
tidak menghendaki adanya tanda baca. Username yang mengandung tanda baca ditangkap
oleh catch(Kesalahan e) dan menampilkan pernyataan Tidak Boleh Menggunakan Tanda
Baca. Apabila username tidak mengandung tanda baca, maka dilanjutkan dengan eksekusi
kombinasi username dan password yang diinputkan dengan yang telah ditentukan. Apabila
kombinasi sesuai, maka akan muncul pernyataan LOGIN SUCCESS, sedangkan apabila
tidak sesuai akan muncul pernyataan LOGIN FAILED.
20
S1 Pend. Teknik Informatika 2014 OFF B
TUGAS PRAKTIKUM 2
Program Login dengan Exception Handling dan Finally
Kode Program
File Kesalahan.java
File LoginFinally.java
Hasil eksekusi
Deskripsi program :
21
S1 Pend. Teknik Informatika 2014 OFF B
Program di atas tidak jauh berbeda dengan program sebelumnya, yaitu mendeteksi
adanya exception tanda baca. Pada program ini, programmer membuat exception sendiri,
yaitu Kesalahan yang menuruni dari class Exception. Username yang mengandung tanda
baca ditangkap oleh catch(Kesalahan e) dan menampilkan pernyataan Tidak Boleh
Menggunakan Tanda Baca. Apabila username tidak mengandung tanda baca, maka
dilanjutkan dengan eksekusi kombinasi username dan password yang diinputkan dengan
yang telah ditentukan. Apabila kombinasi sesuai, maka akan muncul pernyataan LOGIN
SUCCESS, sedangkan apabila tidak sesuai akan muncul pernyataan LOGIN FAILED.
Selain itu, pada program ini akan menampilkan pernyataan dari blok finally tentang
pengecekan data yang telah dilakukan. Pernyataan tersebut akan tetap dijalankan baik ada
exception maupun tidak ada exception.
22
S1 Pend. Teknik Informatika 2014 OFF B
TUGAS RUMAH 1
Kalkulator dengan Exception Handling
Kode Program
23
S1 Pend. Teknik Informatika 2014 OFF B
24
S1 Pend. Teknik Informatika 2014 OFF B
Hasil eksekusi
25
S1 Pend. Teknik Informatika 2014 OFF B
Menu Pembagian (contoh input berupa huruf)
Contoh InputMismatchException
Menu Keluar
26
S1 Pend. Teknik Informatika 2014 OFF B
Pilihan Tidak Tersedia
Deskripsi program :
Program di atas merupakan program Kalkulator yang menerapkan konsep exception
handling dalam penanganan kesalahan tertentu. Seperti kalkulator pada umumnya, program
ini memiliki beberapa menu penghitungan, antara lain: penjumlahan, perkalian, pembagian,
dan perpangkatan. Jenis exception yang diterapkan di dalam program ini adalah
IllegalArgumentException, InputMismatchException, NumberFormatException, dan
ArithmeticException. Untuk IllegalArgumentException adalah terjadi ketika hasil dari
penghitungan lebih dari 5 digit angka, sedangkan InputMismatchException terjadi pada saat
input tidak wajar (misal memasukkan bilangan 999999999999999999999),
NumberFormatException terjadi apabila input selain angka, dan ArithmeticException untuk
pembagian dengan nol. Secara singkat, alur dari program ini adalah dimulai dengan user
memasukkan pilihan menu. Apabila user memasukkan pilihan yang tidak tersedia (selain 1-
5), maka akan muncul pernyataan "PILIHAN TIDAK TERSEDIA". Lalu, user mulai
memasukkan bilangan untuk operasi/menu yang dipilihnya. Setelah hasil ditampilkan, user
dapat melanjutkan ke operasi yang lain atau keluar dari program dengan memasukkan "5".
27
S1 Pend. Teknik Informatika 2014 OFF B
TUGAS RUMAH 2
28
S1 Pend. Teknik Informatika 2014 OFF B
KESIMPULAN
Berdasarkan hasil praktikum yang telah dilakukan, maka dapat disimpulkan bahwa exception
adalah event yang terjadi ketika program menemui kesalahan pada saat instruksi program
dijalankan. Untuk menangani kesalahan-kesalahan tersebut, maka suatu program harus menerapkan
exception handling di dalamnya. Terdapat lima keyword penting dalam exception handling, antara
lain: try, catch, finally, throw, dan throws. Exception handling memiliki tiga operasi, yaitu Claiming
an exception (menyatakan exception apa saja yang terjadi dalam suatu program), Throwing an
exception (membuat suatu exception object yang dilempar ke dalam sistem), dan Catching an
exception (menangkap exception object yang dilempar ke dalam sistem akan ditangkap untuk
diatasi dalam exception handler).
Beberapa kategori exception adalah Checked exceptions (exception yang disebabkan oleh
kesalahan pemakai program atau hal lain yang dapat diprediksi oleh pemrograman), Runtime
exception (exception yang muncul tidak bisa dihindari oleh pemrograman). dan Error (kesalahan di
luar kendali user ataupun programmer). Model penulisan exception handling dikategorikan ke
dalam beberapa model, antara lain: Try Catch, Multiple Catch, Try Catch Finally. Adapun
keuntungan menggunakan exception handling adalah adanya pemisahan kode error handling dari
kode utama program yang dapat membuat programmer berkonsentrasi terhadap bagian-bagian
tertentu saja, adanya laporan error yang memberitahukan letak kesalahan program, dan adanya
pengelompokan dan pengkategorian tipe exception berdasarkan hierarki classnya sehingga user
mengetahui penyebab kesalahan yang muncul.
29
S1 Pend. Teknik Informatika 2014 OFF B
DAFTAR RUJUKAN
30
S1 Pend. Teknik Informatika 2014 OFF B