BAB XII
PENANGANAN EKSEPSI
PENDAHULUAN
Kesalahan pada umumnya ditangani sewaktu program dikompilasi. Namun
tidak semua kesalahan dapat terdeteksi saat itu. Kesalahan yang lain seringkali
terjadi sewaktu program dijalankan. Untuk itu, Java mengenal istilah eksepsi.
Java menyediakan berbagai class yang berhubungan dengan eksepsi. Class
tertinggi yang telah dikenal adalah Throwable. Berdasarkan class inilah, terdapat
sub class dengan nama Error dan Exception. Sub class Error antara lain
digunakan untuk menangani kesalahan seperti memori habis
(OutOfMemoryError) dan stack habis (StackOverflowError). Kesalahan
seperti ini biasanya tidak perlu ditangani, dengan kata lain program segera diakhir
jika menemukan eksepsi seperti ini. Sub class Exception memiliki sub class
RuntimeException, yang digunakan untuk menangani kesalahan seperti subskrip
array tidak valid (IndexOutOfBoundsException) dan kesalahan aritmatika
(ArithmaticException).
KEGIATAN BELAJAR 15
PENANGANAN EKSEPSI
Hasil Pembelajaran
Setelah menyelesaikan bahasan ini dan mengerjakan soal-soal latihan yang ada,
Anda dapat :
1. Memahami penanganan eksepsi
2. Menjelaskan cara kerja penanganan eksepsi
3. Menjelaskan berbagai macam eksepsi
4. Melontarkan eksepsi
5. Melontarkan kembali eksepsi
133
134 BAB X PACKAGE DAN INTERFACE
Kriteria Penilaian
Keberhasilan Anda dalam menguasai bab ini diukur berdasarkan kriteria
kemampuan sebagai berikut :
1. Menjelaskan perbedaan dari masing-masing jenis eksepsi yang dikenal oleh
Java
2. Dapat menangkap eksepsi dari berbagai macam jenis eksepsi yang dikenal
oleh Java
3. Dapat menerapkan penanganan eksepsi dalam program Java
Sumber Pustaka
1. Abdul Kadir, 2005, Dasar Pemrograman Java™ 2, Andi, Yogyakarta.
2. Herbert Schildt, 2005, Java™ : A Beginner’s Guide, Third Edition, McGraw-
Hill/Osborne, United States of America.
3. Herbert Schildt, Patrick Naughton , 1999, Java™ 2 : The Complete Reference,
Fourth Edition, McGraw-Hill/Osborne, United States of America.
4. Indrajani, S.Kom., MM., Martin, S.Kom., 2007, Pemrograman Berorientasi
Objek dengan Bahasa Java, PT. Elex Media Komputindo, Jakarta.
11.1. Penanganan Eksepsi Kesalahan pada umumnya ditangani sewaktu program dikompilasi. Namun
tidak semua kesalahan dapat terdeteksi saat itu. Kesalahan yang lain seringkali
terjadi sewaktu program dijalankan. Kesalahan yang mungkin terjadi tentu saja
bermacam-macam, misalnya terjadi pembagian suatu bilangan dengan nol hingga
memori habis ketika diperlukan untuk membentuk objek.
Untuk mengatasi kesalahan sewaktu program dieksekusi, Java
menyediakan penanganan eksepsi. Dalam hal ini sistem Java akan “melontarkan”
suatu eksepsi sekiranya terdapat suatu kesalahan sewaktu program dijalankan.
Penanganan eksepsi pada Java dapat digunakan untuk hal-hal berikut :
1. Menangani kesalahan dengan menuliskan kode penanganan kesalahan yang
terpisah dengan kode yang akan ditangani. Sejumlah pernyataan dapat
ditangani dapat hanya menggunakan sebuah penanganan eksepsi.
Suheri, ST – Pemrograman 3 (Pemrograman Berorientasi Objek)
135 BAB X PACKAGE DAN INTERFACE
2. Menyediakan mekanisme yang memungkinkan untuk menjalarkan kesalahan
yang terjadi dalam sebuah metode ke metode yang melakukan pemanggilan
metode tersebut.
3. Menangani berbagai jenis kondisi tidak normal (jenis kesalahan dapat
diketahui).
11.2. Menangkap Eksepsi Agar kesalahan karena eksepsi dapat dikendalikan, eksepsi perlu
“ditangkap”. Untuk keperluan menagnkap eksepsi, Java menyediakan pernyataan
try. Pernyataan ini memiliki dua buah bentuk. Bentuk pertama berupa :
try { //blok yang akan ditangkap sekiranya terjadi eksepsi } catch (parameter) { //blok yang akan dijalankan jika terjadi eksepsi }
Pada pernyataan try di atas parameter berupa nama class yang
berhubungan dengan penanganan eksepsi dan diikuti dengan nama parameter.
Berikut ini contoh penggunaannya di dalam program :
Langkah 1 : Jalankan Notepad
Ketiklah kode program berikut ini pada text editor notepad : public class BagiNol { public static void main(String[] args) { System.out.println("Sebelum pembagian"); try { System.out.println(5/0); } catch (Throwable t) { System.err.println("Terjadi pembagian nol"); } System.out.println("Sesudah pembagian"); } }
Langkah 2 : Simpan Program Java
Simpanlah kode program di atas dengan nama BagiNol.java pada direktori
C:\PBO\.
Suheri, ST – Pemrograman 3 (Pemrograman Berorientasi Objek)
136 BAB X PACKAGE DAN INTERFACE
Langkah 3 : Lakukan Kompilasi dan Jalankan Program
Lakukan kompilasi dan jalankan program di atas seperti pada gambar
berikut ini :
Gambar 11.1 Kompilasi dan Menjalankan Program BagiNol.java
11.3. Catch Secara Bertingkat Java menyediakan berbagai class yang berhubungan dengan eksepsi. Class
tertinggi yang telah dikenal adalah Throwable. Berdasarkan class inilah, terdapat
sub class dengan nama Error dan Exception. Sub class Error antara lain
digunakan untuk menangani kesalahan seperti memori habis
(OutOfMemoryError) dan stack habis (StackOverflowError). Kesalahan
seperti ini biasanya tidak perlu ditangani, dengan kata lain program segera diakhir
jika menemukan eksepsi seperti ini. Sub class Exception memiliki sub class
RuntimeException, yang digunakan untuk menangani kesalahan seperti subskrip
array tidak valid (IndexOutOfBoundsException) dan kesalahan aritmatika
(ArithmaticException). Kesalahan yang tergolong dalam Exception perlu
ditangani, misalnya jika ada pembagian bilangan dengan bilangan nol, program
dapat diatur agar tidak diakhiri. Berikut ini bentuk umumnya : try { //blok yang akan ditangkap sekiranya terjadi eksepsi } catch (RuntimeException r) { //blok yang akan dijalankan jika terjadi RuntimeError } catch (Exception e) { //blok yang akan dijalankan jika terjadi eksepsi Exception } catch (Throwable t) { //blok yang akan terjadi jika terjadi eksepsi yang lain }
Suheri, ST – Pemrograman 3 (Pemrograman Berorientasi Objek)
137 BAB X PACKAGE DAN INTERFACE
Berikut ini contoh dalam program :
Langkah 1 : Jalankan Notepad
Ketiklah kode program di bawah ini pada text editor notepad : public class BagiNolLagi { public static void main(String args[]) { System.out.println("Sebelum pembagian"); try { System.out.println(2/0); } catch (RuntimeException r) { System.err.println("RuntimeException"); } catch (Exception e) { System.err.println("Exception"); } catch (Throwable t) { System.err.println("Throwable"); } System.out.println("Sesudah pembagian"); } }
Langkah 2 : Simpan Program Java
Simpan kode program di atas dengan nama BagiNolLagi.java pada
direktori C:\PBO\.
Langkah 3 : Lakukan Kompilasi dan Jalankan Program
Lakukan kompilasi dan jalankan program di atas seperti pada gambar
berikut ini :
Gambar 11.2 Kompilasi dan Menjalankan Program BagiNolLagi.java
Suheri, ST – Pemrograman 3 (Pemrograman Berorientasi Objek)
138 BAB X PACKAGE DAN INTERFACE
11.4. Melontarkan Eksepsi Java menyediakan pernyataan yang digunakan untuk melontarkan eksepsi,
yaitu berupa pernyataan throw. Bentuknya pernyataan ini : throw variabelObjek;
Dalam hal ini, variabelObjek menyatakan variabel objek yang merujuk ke
suatu class eksepsi. Untuk melihat efek throw, perhatikan program berikut :
Langkah 1 : Jalankan Notepad
Ketiklah kode program di bawah ini pada text editor notepad : public class EfekThrow { public static void main(String[] args) { RuntimeException r; r = new RuntimeException(“Eksepsi RuntimeException”); System.out.println(“Sebelum throw”); throw(r); } }
Langkah 2 : Simpan Program Java
Simpan kode program di atas dengan nama EfekThrow.java pada
direktori C:\PBO\.
Langkah 3 : Lakukan Kompilasi dan Jalankan Program
Lakukan kompilasi dan jalankan program di atas seperti pada gambar
berikut ini :
Gambar 11.3 Kompilasi dan Menjalankan Program EfekThrow.java
Suheri, ST – Pemrograman 3 (Pemrograman Berorientasi Objek)
139 BAB X PACKAGE DAN INTERFACE
11.5. Melontarkan Kembali Eksepsi Adakalanya dalam suatu program, kita perlu melontarkan eksepsi kembali.
Kegunaannya antara lain memungkinkan metode lain untuk menangkap eksepsi
tersebut. Berikut ini contoh penggunaannya : public class EfekThrow2 { public static void main(String[] args) { int[] larik = new int[10]; try { larik[50] = 77; } catch (ArrayIndexOutOfBoundsException a) { a = new ArrayIndexOutOfBoundsException( "Subskript array harus berkisar " + "antara 0 sampai dengan 9"); throw(a); } } }
Langkah 2 : Simpan Program Java
Simpan kode program di atas dengan nama EfekThrow2.java pada
direktori C:\PBO\.
Langkah 3 : Lakukan Kompilasi dan Jalankan Program
Lakukan kompilasi dan jalankan program di atas seperti pada gambar
berikut ini :
Gambar 11.4 Kompilasi dan Menjalankan Program EfekThrow2.java
11.6. Klausa throws Klausa throws berfungsi untuk memberitahukan bahwa suatu metode ada
kemungkinan menghasilkan suatu eksepsi. Bagi yang membaca bentuk metode
dengan kluasa throws perlu melakukan langkah sendiri untuk menangani
Suheri, ST – Pemrograman 3 (Pemrograman Berorientasi Objek)
140 BAB X PACKAGE DAN INTERFACE
kesalahan akibat pemanggilan metode tersebut. Berikut ini contoh penggunaan
klausa throws pada program :
Langkah 1 : Jalankan Notepad
Ketiklah kode program berikut ini pada text editor notepad : import java.io.*; class SuatuKelas { public void metodeA() { System.out.println(“MetodeA”); } public void metodeB() throws IOException { System.out.println(“MetodeB”); } } public class EfekThrows { public static void main(String args[]) { SuatuKelas obj = new SuatuKelas(); obj.metodeA(); try { obj.metodeB(); } catch (IOException e) { } } }
Langkah 2 : Simpan Program Java
Simpan kode program di atas dengan nama EfekThrows.java pada
direktori C:\PBO\.
Langkah 3 : Lakukan Kompilasi dan Jalankan Program
Lakukan kompilasi dan jalankan program di atas seperti pada gambar
berikut ini :
Gambar 11.5 Kompilasi dan Menjalankan Program EfekThrows.java
Suheri, ST – Pemrograman 3 (Pemrograman Berorientasi Objek)
141 BAB X PACKAGE DAN INTERFACE
Suheri, ST – Pemrograman 3 (Pemrograman Berorientasi Objek)
Rangkuman 1. Kesalahan pada umumnya ditangani sewaktu program dikompilasi. Namun
tidak semua kesalahan dapat terdeteksi saat itu. Kesalahan yang lain seringkali
terjadi sewaktu program dijalankan. Untuk itu, Java mengenal istilah eksepsi.
2. Penanganan eksepsi pada Java dapat digunakan untuk hal-hal berikut :
a. Menangani kesalahan dengan menuliskan kode penanganan kesalahan
yang terpisah dengan kode yang akan ditangani. Sejumlah pernyataan
dapat ditangani dapat hanya menggunakan sebuah penanganan eksepsi.
b. Menyediakan mekanisme yang memungkinkan untuk menjalarkan
kesalahan yang terjadi dalam sebuah metode ke metode yang melakukan
pemanggilan metode tersebut.
c. Menangani berbagai jenis kondisi tidak normal (jenis kesalahan dapat
diketahui).
Soal-soal Latihan 1. Sebutkan dan jelaskan eksepsi-eksepsi apa saja yang dapat ditangani oleh
Java!
2. Apakah try dapat mengandung except dan finally sekaligus?