EXCEPTI ON HANDLI NG

8.6. EXCEPTI ON HANDLI NG

8.6.1. Pengertian Exception Handling

Kesalahan dalam sebuah program sering kali muncul, meskipun program tersebut dibuat oleh programmer berkemampuan tinggi. Untuk menghindari pemborosan waktu pada proses pencarian kesalahan, Java menyediakan mekanisme penanganan exception. Exception adalah singkatan dari Exceptional Events. Menurut definisi umum, exception adalah kondisi abnormal yang terjadi saat runtime. Runtime error atau kesalahan-kesalahan yang terjadi pada saat program berjalan diwujudkan dan exception. Exception dapat dibangkitkan secara otomatis oleh sistem Java runtime maupun sengaja kita buat melalui pernyataan tertentu untuk tujuan tertentu.

Perhatikan kode program berikut:

public class DivByZero { public static void main(String args[]) { int a = 5, b = 0, c;

c = a/b;

System.out.println("c = " + c); } }

186 Rekayasa Perangkat Lunak

Kode program di atas, secara sintaks tidak salah. Namun ada kesalahan yang fatal yaitu ada pembagian dengan 0. Yaitu a = 5 dibagi b = 0. Kesalahan seperti ini sering terjadi karena memang tidak kentara bila kita tidak cermat. Apabila kita kompilasi kode program tersebut maka kompilasi akan berlangsung sukses. Namun bila kita jalankan kita tidak akan mendapatkan hasil tetapi program akan menampilkan pesan terjadinya exception atau kondisi tidak normal (Gambar 8.8) dan program akan berhenti.

Gambar 8.8. Peringatan terjadinya kesalahan.

Pesan pada Gambar 8.8 tersebut menginformasikan tipe exception yang terjadi pada baris dimana exception itu berasal. Inilah aksi default yang terjadi bila terjadi exception yang tidak tertangani. Jika tidak terdapat kode yang menangani exception yang terjadi, aksi default akan bekerja otomatis.

Beberapa tipe e xception yang umum antara lain: •

ArithmeticException. Exception karena kesalahan yang ada hubungannya dengan perhitungan, misalnya pembagian dengan 0.

• ArrayIndexOutOfBoundException. Exception karena membaca indeks array diluar batas yang ditetapkan.

NullPointerException. Kesalahan karena pointer yang tidak berisi (null)

• Dan lain-lain

8.6.2. Try dan Catch

Try digunakan untuk membuat blok yang berisi pernyataan-pernyataan yang mungkin menimbulkan exception. Apabila dalam proses eksekusi pernyataan-pernyataan pada blok tersebut terjadi exception maka exception akan dilempar ke bagian blok penangkap exception yang dibuat dengan kata kunci catch. Perhatikan contoh berikut in.

Contoh 8.15. Exception dengan try-catch.

public class DivByZero { public static void main(String args[]) { int a = 5, b = 0, c;

try {

c = a/b;

Rekayasa Perangkat Lunak 187

} catch (ArithmeticException exc) {

//Reaksi jika terjadi exception System.out.println(exc);

} System.out.println("Setelah exception"); } }

Kode program pada contoh 8.15 ini adalah pengembangan dari kode program sebelumnya. Pernyataan c = a/b merupakan pernyataan yang kita uji apakah mengandung exception atau tidak. Jika terjadi exception maka exception akan dilempar ke bagian catch. Exception yang kita periksa adalah ArithmeticException. Reaksi yang muncul jika terjadi exception adalah menjalankan pernyataan System.out.println(exc);. Dengan mekanisme seperti ini maka program tidak akan dipaksa berhenti dan perintah setelah blok try-catch tetap bisa dijalankan. Gambar 8.9. menunjukkan hasil eksekusi kode program di atas. Bandingkan dengan Gambar 8.8.

Gambar 8.9. Output dari try-catch.

Umumnya exception pada satu masalah tidak hanya satu. Pada contoh

8.16 berikut ini, kita menggunakan beberapa tipe exception untuk memeriksa kemungkinan terjadi exception. Ketik kode program berikut kemudian jalankan dan amati apa yang terjadi.

Contoh 8.16. Exception dengan try-catch.

class BanyakEksepsi { public static void test(int a, int b) { try { int c = a / b; System.out.println("Hasil bagi: " + c);

int[] Arr = {1,2,3,4,5}; // array dengan 5 elemen Arr[10] = 11; // mengakses indeks ke-10

} catch (ArithmeticException ae) {

System.out.println("Terdapat pembagian dengan 0"); System.out.println(ae);

} catch (ArrayIndexOutOfBoundsException oobe) { System.out.println("Indeks di luar rentang"); System.out.println(oobe);

188 Rekayasa Perangkat Lunak 188 Rekayasa Perangkat Lunak

test(4, 0); // menimbulkan ArithmeticException System.out.println();

menimbulkan ArrayIndexOutOfBoundsException } }

Disamping menangkap exception, Java juga mengijinkan seorang user untuk melempar ( throw) sebuah exception. Perhatikan contoh 8.17 berikut ini.

Contoh 8.17. Exception dengan try-catch dan throw.

class ThrowDemo { public static void main(String args[]){ String input = "Salah input"; try { if (input.equals("Salah input")) { throw

new RuntimeException("Demonstrasi Throw"); } else { System.out.println(input);

System.out.println("Setelah throw");

} catch (RuntimeException e) {

System.out.println("Exception ditangkap di sini."); System.out.println(e); } } }

Perhatikan pada pernyataan yang dimulai dari perintah if. Kalau diartikan pernyataan tersebut adalah jika nilai variabel input sama dengan “Salah input” maka lemparkan exception dengan menampilkan “Demonstrasi Throw”. Output dari kode program ini akan tampak seperti pada Gambar 8.10.

Gambar 8.10. Output program dengan throw.

Rekayasa Perangkat Lunak 189

8.6.4. Finally

Blok finally mengandung kode penanganan setelah penggunaan try dan catch. Blok kode ini selalu tereksekusi apapun yang terjadi pada blok try. Blok kode tersebut juga akan menghasilkan nilai true meskipun return, continue ataupun break tereksekusi. Perhatikan kode program berikut.

Contoh 8.18. Exception dengan try-catch-finally.

class DemoFinally { private static int i = 0;

public static void main(String[] args) { while (true) { try {

System.out.print("Pada saat i = " + i + ": "); if (i++ == 0) {

throw new Exception(); // melempar exception } System.out.println("Tidak terjadi exception");

} catch (Exception e) { System.out.println("Terdapat exception"); } finally { System.out.println("Pernyataan

dalam blok finally\n"); if (i == 2) { break; // pada saat i==2, pengulangan akan berhenti } } } } }

Bila kode program dijalankan maka akan tampak seperti pada Gambar

8.11. Perhatikan bahwa apa yang ada pada blok kode finally akan selalu dijalankan.

Gambar 8.11. Output kode program try-catch-finally.

190 Rekayasa Perangkat Lunak

Dokumen yang terkait

ANALISIS KESESUAIAN ANTARA RENCANA PEMBANGUNAN JANGKA MENENGAH DAERAH 2010-2015 DENGAN ALOKASI DANA, PROGRAM, DAN CAPAAN PROGRAM SATUANKERJA PERANGKAT DAERAH (Studi pada Kabupaten Jember)

1 28 68

ANALISIS KINERJA SIMPANG MENGGUNAKAN PERANGKAT LUNAK KAJI DAN PTV VISTRO (STUDI KASUS : SIMPANG BERSINYAL DAN TAK BERSINYAL PERKOTAAN JEMBER)

5 45 18

ANALISIS PENGARUH PERSEPSI PENERAPAN TRANSPARANSI DAN AKUNTABILITAS PUBLIK TERHADAP KINERJA SATUAN KERJA PERANGKAT DAERAH (Studi Empiris Pada Pemerintah Daerah Kabupaten Bondowoso)

1 31 18

ANALISIS PENGARUH PERSEPSI TRANSPARANSI DAN AKUNTABILITAS TERHADAP KINERJA LAYANAN PUBLIK SATUAN KERJA PERANGKAT DAERAH KABUPATEN BANYUWANGI

1 32 18

ANALISIS PENGARUH PERSEPSI TRANSPARANSI DAN AKUNTABILITAS TERHADAP KINERJA LAYANAN PUBLIK SATUAN KERJA PERANGKAT DAERAH KABUPATEN BANYUWANGI

19 247 18

PERANGKAT PEMBELAJARAN RENCANA PELAKSANAAN RENCANA PELAKSANAAN PEMBELAJARAN PEMBELAJARAN5

0 39 600

PERANGKAT PEMBELAJARAN RENCANA PELAKSANAAN RENCANA PELAKSANAAN PEMBELAJARAN PEMBELAJARAN 4

0 30 284

PENGUJIAN PERANGKAT LUNAK PADA SISTEM INFORMASI RAPOR ONLINE MENGGUNAKAN METODE BLACKBOX TESTING DENGAN TEKNIK EQUIVALENCE CLASS PARTITIONING

3 38 23

PENGEMBANGAN APLIKASI CLIENT E-LEARNING UNTUK LEARNING MANAGEMENT SYSTEM (LMS) CLAROLINE PADA PERANGKAT MOBILE ANDROID

2 27 29

HUBUNGAN KEPEMIMPINAN KEPALA DESA DENGAN EFEKTIVITAS KERJA PERANGKAT DESA (Studi Pada Pemerintah Desa Talang Bojong Kecamatan Kotabumi Kota Kabupaten Lampung Utara)

0 25 90