EXCEPTION
(TRY, CATCH, FINALLY AND THROW)
Exception adalah
suatu mekanisme yang digunakan oleh beberapa bahasa pemrograman untuk
mendeskripsikan apa yang harus dilakukan jika ada suatu kondisi yang tidak
diinginkan terjadi. Eksepsi dapat dijumpai saat:
Ø
Mengakses
method dengan argumen yang tidak sesuai
Ø
Membuka
file yang tidak ada
Ø
Koneksi
jaringan yang terganggu
Ø
Manipulasi
operan yang nilainya keluar dari batasan yang didefinisikan
Ø
Pemanggilan
class yang tidak ada
Ø
Java
menyediakan dua kategori besar untuk eksepsi yang disebut sebagai checked
exception dan unchecked exception.
Checked Exception
Adalah eksepsi yang
diantisipasi oleh programmer untuk dihandle dalam program dan terjadi
dikarenakan oleh kondisi luar yang siap muncul saat program berjalan. Misalnya
membuka file yang tidak ada atau gangguan jaringan.
Yang termasuk checked exception adalah class java.lang.Throwable dan semua subclassnya, kecuali class dan subclass dari java.lang.Error dan java.lang.RuntimeError
Yang termasuk checked exception adalah class java.lang.Throwable dan semua subclassnya, kecuali class dan subclass dari java.lang.Error dan java.lang.RuntimeError
Unchecked Exception
bisa muncul dari
kondisi yang merepresentasikan adanya bug atau situasi yang secara umum
dianggap terlalu sulit bagi program untuk menghandlenya. Disebut sebagai
unchecked karena kita tidak perlu mengeceknya atau melakukan sesuatu jika
kondisi ini terjadi. Eksepsi yang muncul dari kategori situasi yang
merepresentasikan bug ini disebut sebagai runtime exception. Misalnya mengakses
array melebihi size yang dimilikinya.
Yang termasuk Unchecked exception
Yang termasuk Unchecked exception
1. java.lang.Error dan
subclassnya
2. java.lang.RuntimeException dan
subclassnya.
Sedangkan
eksepsi yang muncul sebagai akibat dari isu environment software – yang ini
jarang sekali atau sulit sekali untuk dihandle- disebut sebagai error, misalnya
running out memory.
Jadi,
class Exception mendefinisikan kondisi error yang ringan yang dijumpai oleh
program. Sedangkan untuk kondisi error yang berat didefinisikan dengan Error.
Class Exception
Class Exception adalah
sebuah class dasar yang merepresentasikan checked exception. Dalam hal ini,
bukannya membiarkan terjadinya penghentian program, sebaliknya Anda harus
menuliskan beberapa kode untuk menghandle eksepsi dan berikutnya melanjutkan
program.
Class Error
Class Error adalah
class dasar yang digunakan untuk kondisi error serius yang tidak terdeteksi.
Dalam banyak kasus, Anda harus membiarkan program diterminasi.
Class RuntimeException
“The
class Exception and its subclasses are a form
of Throwable that indicates conditions that a reasonable application
might want to catch. “ (JDK 5.0 Documentation)
Seperti
dari penjelasan yang diberikan oleh JDK Documentation, maka dapat
kita lihat bahwaerror dan exception pada dasarnya
berbeda. Error merupakan masalah yang muncul tapi tidak ada alasan
yang kuat untuk menangkapnya. Sedangkan Exception merupakan kesalahan
kecil yang muncul dan ingin diperlakukan sesuai keinginan developer.
III. KEYWORD
PENTING PADA EXCEPTION HANDLING
Ada
5 keyword penting dalam java dalam
hal exception handling :
1. TRY
Keyword ini
biasanya digunakan dalam suatu block program. keyword ini
digunakan untuk mencoba menjalankan block program kemudian
mengenai dimana munculnya kesalahan yang ingin diproses. Keyword ini
juga harus dipasangkan
dengan keyword catch ataukeyword finally yang akan
dibahas pada point kedua dan ketiga.
Contoh penggunaan
:
public class A
{
public static void main(String[] args) {
try
{
int
a = 1 / 0; // berpotensi untuk menimbulkan kesalahan yaitu
//
pembagian dengan bilangan 0
System.out.println("perintah
selanjutnya");
}
catch (Exception
kesalahan)
{
System.err.println(kesalahan);
}
}
}
|
Output :
java.lang.ArithmeticException:
/ by zero
Perhatikan
contoh diatas, ada beberapa hal penting yang perlu dilihat. Pertama, blockprogram yag
diyakini menimbulkan kesalahan maka ada di dalam block try and catch.Kedua,
kesalahan yang muncul akan dianggap sebagai object dan
ditangkap catch kemudian diassign ke variable kesalahan
dengan tipe Exception. Ketiga, perintah setelah munculnya kesalahan
pada block try tidak akan dieksekusi.
2. CATCH
Jika anda
sudah melihat contoh try maka secara tidak langsung anda sudah
memahami kegunaan dari keyword ini. Dalam java, keyword catch harus
dipasangkan dengan try. Kegunaan keyword ini adalah menangkap kesalahan
atau bug yang terjadi dalam block try.Setelah menangkap
kesalahan yang terjadi maka developer dapat melakukan hal apapun
pada block catch sesuai keinginan developer.
Contoh Program
:
catch(Exception
kesalahan)
{
System.out.println(“mohon
maaf, terdapat kesalahan pada program”);
//lakukan
hal lainnya disini
}
|
Keyword catch juga
dapat diletakan berulang-ulang sesuai dengan kebutuhan. Contoh :
public class A
{
public
static void main(String[] args) {
try
{
int
a = 1/0; //berpotensi untuk menimbulkan kesalahan yaitu pembagian
dengan bilangan 0
System.out.println("perintah
selanjutnya");
}
catch(NullPointerException
e)
{
}
catch(ArrayIndexOutOfBoundsException
e)
{
}
catch(Exception
e)
{
}
}
}
|
3. FINALLY
Keyword ini
merupakan keyword yang menunjukan bahwa block program tersebut
akan selalu dieksekusi meskipun adanya kesalahan yang muncul atau pun tidak
ada. Contoh implementasinya pada program :
public class A
{
public
static void main(String[] args) {
try
{
//int
a = 1/0;
}
finally
{
System.out.println("terima
kasih telah menjalankan program");
}
}
}
|
Output Program diatas:
terima kasih telah menjalankan
program
Jika saya lakukan modifikasi
program diatas menjadi :
public class A
{
public
static void main(String[] args) {
try
{
int
a = 1/0;
}
catch
(Exception e)
{
System.out.println(“ada
kesalahan yang muncul”);
}
finally
{
System.out.println(“terima
kasih telah menjalankan program”);
}
}
}
|
Output Program
:
ada kesalahan yang muncul
terima kasih telah menjalankan
program
Perhatikan kedua contoh
diatas, block finally akan selalu dieksekusi meskipun adanya
kesalahan atau tidak pada block try. Berbeda dengan keyword catch keyword finally hanya
dapat diletakan 1 kali setelah keyword try.
4.
THROW
Keyword ini digunakan untuk
melemparkan suatu bug yang dibuat secara manual. Contoh program :
public class A
{
public
static void main(String[] args) {
try
{
throw
new Exception("kesalahan terjadi");
}
catch(Exception
e)
{
System.out.println(e);
}
}
}
|
Output
Program :
java.lang.Exception:
kesalahan terjadi
Seperti yang
anda lihat pada program diatas, pada keyword throw new
Exception(“kesalahan terjadi”); akan melempar object bertipe exception yang
merupakansubclass dari class Exception sehingga akan
dianggap sebagai suatu kesalahan yang harus ditangkap oleh keyword catch.
Perhatikan
contoh berikut ini :
public class A
{
public
static void main(String[] args) {
try
{
throw
new B(); //cobalah ganti baris ini dengan à new B();
}
catch(Exception
e)
{
System.out.println(e);
}
}
}
class B extends Exception
{
B()
{
}
public
String toString()
{
return
“object dengan tipe kelas B”;
}
}
|
Output Program :
object dengan tipe kelas B
Program diatas telah mendefinisikan
suatu kelas B mengextends dari kelas Exception. Ketika kita
melakukan throw new B(); maka object dari kelas bertipe B
ini akan dianggap kesalahan dan ditangkap oleh block catch. Sekarang
jika anda menghilangkan keywordthrow apa yang terjadi?
5.
THROWS
Keyword throws digunakan
dalam suatu method atau kelas yang mungkin menghasilkan suatu
kesalahan sehingga perlu ditangkap errornya. Cara mendefinisikannya dalam
method adalah sebagai berikut : <method
modifier> type method-name throws exception-list1, exceptio-list2,
… {}.
Contoh Program :
public class A
{
public
static void main(String[] args) {
try
{
f();
}
catch(Exception
e)
{
System.out.println(e);
}
}
public
static void f() throws NullPointerException, ArrayIndexOutOfBoundsException
{
//implementasi
method
throw
new NullPointerException();
//throw
new ArrayIndexOutOfBoundsException();
}
}
|
Output Program :
java.lang.NullPointerException
Contoh program
lainnya :
public class A
{
public
static void main(String[] args) {
try
{
f();
}
catch(Exception
e)
{
System.out.println(e);
}
}
public
static void f() throws NullPointerException, ArrayIndexOutOfBoundsException
{
//implementasi
method
//throw
new NullPointerException();
throw
new ArrayIndexOutOfBoundsException();
}
}
|
Output
Program :
java.lang.ArrayIndexOutOfBoundsException
Perhatikan
kedua contoh pengguaan keyword throws pada method.
Ketika method tersebut dipanggil dalam block try.
Maka method tersebut akan membuat object yang merupakansubclass dari class Throwable dan method tersebut
akan melemparkan kesalahan yang ada dalam block method kedalam block try.
Di dalam block try, kesalahan tersebut kemudian ditangkap
kedalam block catch.

Tidak ada komentar:
Posting Komentar