Senin, 01 Oktober 2018

Penggunaan Exception Handling Pada Java

exception handling pada java


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 7
finally {
cetakan.close();
}
} }

0 komentar

Posting Komentar

Kritik dan Saran Anda sangat kami perlukan