Eksepsi adalah masalah yang muncul pada saat mengeksekusi program. Sebuah eksepsi dapat terjadi karena berbagai hal seperti:
- Pengguna memasukan data yang tidak valid
- File yang perlu dibuka tidak ditemukan
- Koneksi jaringan terputus
- Kesalahan – kesalahan lainnya
Semua kelas eksepsi merupakan subtype dari kelas java.lang.Exception. Kelas Exception merupakan subkelas dari kelas Throwbale. Selain kelas Exception ada juga kelas subkelas error.
Kelas Exception memiliki dua subkelas utama yaitu IOException dan RuntimeException.
Eksepsi built-in dalam Java
Terdapat dua jenis eksepsi built-in dalam Java.
- Checked exceptions: eksepsi yang biasanya merupakan kesalahan pengguna atau masalah yang tidak dapat dilihat oleh programer. Sebagai contoh, jika file yang ingin dibuka tidak bisa ditemukan.
- RuntimeException: eksepsi yang merupakan kesalahan logika atau kesalahan penulisan kode yang dibuat oleh programer.
- Error: buka merupakan eksepsi melainkan masalah yang muncul diluar masalah dari pengguna atau programer.
Berikut ini daftar Unchecked RuntimeException dalam Java:
Eksepsi | Deskrepsi |
---|---|
ArithmeticException | Kesalahan aritmatika seperti pembagian dengan nol |
ArrayIndexOfBoundsException | Index array diluar batas |
ArrayStroeException | Penambahan elemen array dengan tipe yang tidak kompatible |
ClassCastException | Pengguaan cast yang tidak valid |
IllegalArgumentException | Menggunakan argumen illegal untuk memanggil method |
IllegalMonitorStateException | Operasi monitor illegal |
IllegalStateException | Aplikasi sedang berada dalam keadaan yang tidak tepat |
IllegalTreadStateException | Operasi yang diminta tidak kompitble dengan keadaan aplikasi |
IndexOutOfBoundException | Beberapa tipe indeks di luar batas |
NegativeArraySizeException | Array dibuat dengan ukuran negatif |
NullPointerException | Penggunaan refrensi null yang tidak valid |
NumberFormatException | Konversi string menjadi numerik yang tidak valid |
SecurtyException | Percobaan mengubah keamanan aplikasi |
StringIndexOutOfBounds | Percobaan untuk menggunakan indeks diluar batas string |
UnsupportedOperationException | Ditemukan operasi yang tidak di dukung |
Berikut ini daftar Checked Exception dalam java.lang.
Exception | Description |
---|---|
ClassNotFoundException | Kelas tidak ditemukan |
IllegalAccesException | Percobaan untuk melakukan cloning objek yang tidak mengimplementasikan interface Cloneable |
InstantiationException | Akses terhadap kelas tidak di ijinkan |
InterruptedException | Percobaan untuk membuat objek dari kelas abstrak atau interface |
NoSuchFiledException | Sebuah thread diinterupsi oleh theard yang lain |
NoSuchMethodException | Method yang diminta tidak tersedia |
Method – Method dalam Exceptions
Berikut ini daftar method penting dalam kelas Throwable:
- public String getMessage()
Mengmbalikan pesan rinci mengenai eksepsi yang didapatkan.
- public Throwable getCause()
Mengembalikan penyebab eksepsi
- public String toString()
Mengembalikan nama kelas disambungkan dengan hasil dan getMessage()
- public void printStackTrace()
Menampilkan hasil dari toString() bersama dengan stack trace.
- public StackTraceElement() getStackTrace()
Mengembalikan sebuah array yang berisi setiap elemen pada stack trace
- public Throwable filinStackTrace()
Mengisi stack trace objek Throwable dengan stack trace yang ada
Menangkap Eksepsi
Sebuah method menangkap eksepsi dengan menggunakan kombinasi kata kunci try dan catch
Berikut sintaksnya:
1 2 3 4 5 6 7 8 |
try { // Kode yang diproteksi catch(NamaEksepsi e1) { // Blok catch } } |
Berikut ini contoh penggunaannya:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
// Nama File : TesEksep.java import java.io.*; public class TesEksep { public static void main(String args[]) { try { int a[] = new int[2]; System.out.println("Mengakses elemen ketiga :" + a[3]); } catch (ArrayIndexOutOfBoundsException e) { System.out.println("Eksepsi yang muncul :" + e); } System.out.println("Di luar batas"); } } |
Kode tersebut akan menghasilkan output berikut:
1 2 3 |
Eksepsi yang muncul : Java.lang.ArrayIndexOutOfBroundsException:3 Di luar batas |
Menggunakan Beberapa Blok Catch
Sebuah blok try dapat diikuti dengan beberapa blok catch.
Berikut sintaksnya:
1 2 3 4 5 6 7 8 9 |
try { //Kode yang diproteksi } catch (TipeEksepsi1 e1) { //Blok catch } catch (TipeEksepsi2 e2) { //Blok catch } catch (TipeEksepsi3 e3) { //Blok catch } |
Berikut ini contoh penggunannya:
1 2 3 4 5 6 7 8 9 10 11 |
try { file = newFileInputStream(namaFile); x = (byte) file.read(); } catch (IOException i) { i.printStackTrace(); return -1; } catch (FileNOtFoundException f) // Tidak valid; { f.printStackTrace(); return -1; } |
Kata Kunci Throws/ Throw
Jika sbeuah method tidak mengatasi sebuah eksepsi checked, method tersebut harus mendeklarasinya dengan menggunakan kata kunci throws.
Anda dapat melempar sebuah eksepsi, baik eksepsi baru maupun eksepsi yang baru saja ditangkap, dengan menggunakan kata kunci throw. Hal ini yang membedakan kedua kata kunci throws dan throw.
Berikut ini contoh penggunaannya:
1 2 3 4 5 6 7 8 9 10 |
import java.io.*; public class namaKelas { public void deposit(double jumlah) throws RemoteException { //implementasi method throw new RemoteException(); } //Definisi kelas selanjutnya } |
Kata Kunci Finally
Kata kunci finally digunakan untuk membuat blok kode yang mengikuti blok try. Blok kode finally selalu dieksekusi, baik terjadi eksepsi ataupun tidak.
Berikut sintaksnya:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
try { //Kode yang diproteksi } catch(TipeEksepsi1 e1) { //Blok catch } catch(TipeEksepsi2 e2) { //Blok catch } catch(TipeEksepsi3 e3) { //Blok catch } finally { Blok finally selalu dieksekusi. } |
Berikut ini conoth penggunaannya:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
public class TesEksep { public static void main(String args[]) { int a[] = new int[2]; try { System.out.println("Mengakses elemen ketiga :" + a[3]); } catch (ArrayIndexOutOfBoundsException e) { System.out.println("Eksepsi yang muncul :" + e); } finally { a[0] = 6; System.out.println("Nilai elemen pertama: " + a[0]); System.out.println("Statmen finally dieksekusi"); } } } |
Kode tersebut akan menghasilkan output berikut:
1 2 3 4 |
Eksepsi yang muncul: java.lang.ArrayIndeksOutOfBoundsException:3 Nilai elemen pertama :6 Statmen finaly dieksekusi |
Deklarasi Eksepsi Buatan Sendiri
Anda dapat membuat eksepsi Anda sendiri dalam Java.
Berikut ini sintaks untuk membuat kelas eksepsi Anda sendiri:
1 2 |
class EksepsiKu extends Exception { } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
//Nama file DanaTidakValid.java import java.io.*; public class DanaTidakValid extends Exception { private double jumlah; public DanaTidakValid(double jumlah) { this.jumlah = jumlah; } public double ambilJumlah() { return jumlah; } } |