Exception adalah event yang terjadi ketika program menemui kesalahan pada
saat instruksi program dijalankan. Banyak hal yang dapat menimbulkan event ini,
misalnya crash, harddisk rusak dengan tiba-tiba, sehingga program-program tidak
bisa mengakses file-file tertentu. Programmer pun dapat menimbulkan event ini,
misalnya dengan melakukan pembagian dengan bilangan nol, atau pengisian elemen
array melebihi jumlah elemen array yang dialokasikan dan sebagainya.
Exception terdiri dari dua macam kelompok, yaitu :
- Exception yang merupakan subclass RunTimeException
- Exception yang bukan subclass RunTimeException
RunTimeException biasanya disebabkan oleh kesalahan
program atau pada desain program. Misalnya NullPointerException yang disebabkan
oleh proses inisialisasi program yang tidak sempurna dan
ArrayIndexOutOfBoundsException yang disebabkan akses array yang melebihi
kapasitas array yang ada.
Dalam bahasa Java, ketika terjadi kesalahan, otomatis akan dilemparkan sebuah
objek yang disebut exception, yang kemudian dapat diproses lebih lanjut oleh
fungsi-fungsi yang siap menangani kesalahan tersebut. Proses pelemparan
exception tersebut sering dikenal dengan istilah throwing exception, sedangkan
proses penerimaan exception yang bersangkutan dikenal dengan istilah catch
exception.
Pada saat dijalankan, ada
kondisi-kondisi di mana program tidak berjalan sebagaimana
yangdiharapkan.Kondisi-kondisi tersebut disebut exception. Jika terjadi
exception, program akan berhentidan Java akan memberitahu apa yang terjadi.Ada
exception yang dicegah oleh Java pada saat program dicompile seperti pada
CetakBerkas.java(juga TulisBerkas.java).Program tersebut tidak bisa dicompile
karena Java meminta Anda untukmengantisipasi exception yang mungkin terjadi.
Exception semacam itu disebut dengan checkedexception atau
exception yang diperiksa oleh compiler Java. Jika exception tidak diantisipasi
(try-catch/throw), maka program tidak bisa dicompile. Ada juga yang tidak
dicegah oleh Java atau dinamakanunchecked exception contohnya
jika terjadi pembagian dengan nol Java akan melaporkanArithmeticException.
Untuk exception semacam ini, compiler Java tetap mengijinkan programuntuk
dicompile meskipun tidak diantisipasi.
Exception di Java berbeda-beda
tergantung penyebabnya.Java mendefinisikan banyak macamexception. Semua
exception adalah sub-class dari kelas Exception. Misalnya pada
programCetakBerkas.java di atas, jenis exception yang perlu diantisipasi
adalahFileNotFoundException yang dilaporkan oleh Java jika berkas yang dimaksud
tidak ditemukan.
Melempar Exception
Cara yang paling mudah untuk
menangani exception adalah melempar exception tersebut. Maksudmelempar adalah
suatu exception jika terjadi akan diteruskan ke bagian program yang
memanggil.Misalnya method A memanggil method B yang dideklarasikan throws
Exception. Jika terjadiexception pada method B, maka exception tersebut
dilempar ke method A untuk selanjutnya ditanganioleh A. Apa yang terjadi jika
exception dilempar dari method main? Program akan berhenti danmelaporkan
terjadinya exception/error. Contoh melempar exception adalah pada
CetakBerkas.javadan TulisBerkas.java.
Selain cara di atas, kita bisa juga secara eksplisit melempar
exception jika kita mengetahui kapan
terjadinya. Misalnya kita membuat sebuah method untuk melakukan
operasi pembagian.
double bagi(int pembilang, int pembagi){if (pembagi == 0)throw new ArithmeticException("Pembagi bernilai nol.");return pembilang/pembagi;}
Perhatikan perbedaannya,
sebelumnya kita menggunakan throws sedangkan pada contoh inimenggunakan throw
(tanpa 's'). Perhatikan juga perbedaan letak dan cara penggunaan keduanya.
Mengantisipasi Exception dengan Try-Catch
Exception diantisipasi dengan bloktry-catch.
Blok try berisi kode program yang akan ditulisseperti biasa. Apabila terjadi
exception, program akan loncat ke blok catch. Pada blok catch,programmer bisa
menentukan apa yang dilakukan oleh program jika suatu exception
terjadi.Berikutadalah contoh modifikasi dari CetakBerkas.java yang menggunakan
try-catch.
import java.util.Scanner;import java.io.File;public class CetakBerkas{public static void main(String[] args){try {File berkasDiolah = new File("CetakBerkas.java");Scanner input = new Scanner(berkasDiolah);String teksBaris;while (input.hasNextLine()) {teksBaris = input.nextLine();System.out.println(teksBaris);}}catch(FileNotFoundException fnf){System.out.println("Berkas tidak ditemukan.");System.out.println(fnf.getMessage());}}}
Method getMessage() di kelas
Exception berisi pesan error yang dibuat oleh Java. Anda juga bisamencetak
detil kesalahan yang terjadi menggunakan method printStackTrace().
Menggunakan Blok Finally
Blok finally digunakan bersama
dengan try-catch. Pada blok ini programmer bisa meletakkan bagianprogram yang
mesti dijalankan ada ataupun tidak ada exception. Misalnya objek
PrintWriterharus selalu memanggil method close() untuk melepaskan resource yang
digunakan. Apabila terjadiexception, method close() tetap harus dipanggil.
Berikut adalah contoh penggunaan blok finally.
import java.io.PrintWriter;public class TulisBerkas{public static void main(String[] args){PrintWriter cetakan = null;try {cetakan = new PrintWriter("cetakan.txt");cetakan.println("Ini baris pertama.");cetakan.println("Berikutnya baris kedua.");cetakan.println("Lalu baris ketiga.");}catch(Exception e) {System.out.println("Gagal menulis berkas.");}5 dari 7finally {cetakan.close();}} }
0 komentar
Posting Komentar
Kritik dan Saran Anda sangat kami perlukan