You are on page 1of 9

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

BAB X PACKAGE DAN INTERFACE

134

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 Beginners Guide, Third Edition, McGrawHill/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)

BAB X PACKAGE DAN INTERFACE

135

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)

BAB X PACKAGE DAN INTERFACE

136

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)

BAB X PACKAGE DAN INTERFACE

137

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)

BAB X PACKAGE DAN INTERFACE

138

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)

BAB X PACKAGE DAN INTERFACE

139

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)

BAB X PACKAGE DAN INTERFACE

140

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)

BAB X PACKAGE DAN INTERFACE

141

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?

Suheri, ST Pemrograman 3 (Pemrograman Berorientasi Objek)