bab 12 - kegiatan belajar 15 - penanganan eksepsi

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

Upload: ucu-alydroes

Post on 08-Aug-2015

431 views

Category:

Documents


6 download

TRANSCRIPT

Page 1: BAB 12 - Kegiatan Belajar 15 - Penanganan Eksepsi

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

Page 2: BAB 12 - Kegiatan Belajar 15 - Penanganan Eksepsi

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)

Page 3: BAB 12 - Kegiatan Belajar 15 - Penanganan Eksepsi

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)

Page 4: BAB 12 - Kegiatan Belajar 15 - Penanganan Eksepsi

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)

Page 5: BAB 12 - Kegiatan Belajar 15 - Penanganan Eksepsi

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)

Page 6: BAB 12 - Kegiatan Belajar 15 - Penanganan Eksepsi

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)

Page 7: BAB 12 - Kegiatan Belajar 15 - Penanganan Eksepsi

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)

Page 8: BAB 12 - Kegiatan Belajar 15 - Penanganan Eksepsi

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)

Page 9: BAB 12 - Kegiatan Belajar 15 - Penanganan Eksepsi

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?