1.
Pengertian
Error Handling
(Exception Handling)
Exception handling adalah suatu mekanisme penanganan eror
yang mungkin terjadi dalam suatu program. Misalnya sebuah program yang memiliki
operasi pembagian, dimana suatu ketika user menginputkan bilangan pembagi atau
denumerator 0, maka program tersebut harus memiliki suatu exception handling
untuk kasus tersebut. Selain contoh diatas exception handling disini juga
berguna saat program kita membutuhkan akses ke CD ROM, USB, Audio&Video
File, Internet dll, sehingga apabila alat alat yang kita butuhkan dalam program
kita tersebut tiba-tiba terputus aksesnya maka program
kita tidak secara tiba-tiba mati dan agar program kita bisa
terus berjalan.
Program yang
tidak menggunakan exception handling:
· Menjalankan
perintah
· Jika
dalam menjalankan perintah menemui error
· Program
berhenti
Program yang
menggunakan exception handling :
· Menjalankan
perintah
· Jika
dalam menjalankan perintah menemui error
· Exception
akan melemparkan error tersebut
· Catch
akan menerima dan memproses error tersebut
· Program
menjalankan perintah selanjutnya
Sehingga dengan menggunakan Exception Handling kita dapat
memprevent terjadinya runtime error yang menyebabkan program kita berhenti
ditengah tengah jalan.
Sebelum kita
merambah ke programnya, mari kita klasifikasikan jenis-jenis error terlebih
dahulu, dalam ilmu pemrograman, terdapat 3
jenis error. yaitu :
1. Syntax
Error
Syntax Error adalah suatu kesalahan dari penulisan syntax
pada program sehingga syntax tersebut tidak dapat dieksekusi oleh program yang
pasti membuat program tersebut error.
contoh :
public static voit main
pastinya program akan error, VOIT tidak dikenali oleh C#,
sehingga program akan error.
2. Logical
Error
Logical Error adalah suatu kesalahan yang disebabkan oleh
si programmer sendiri, hal ini disebabkan oleh kesalahan penulisan atau rumus
yang diterapkan oleh si programmer. semua angka tidak dapat dibagi oleh 0 (nol). contoh :
int a = 6;
int b = 0;
double c= a / b;
Console.WriteLine(c);
3. Runtime
Error
Error ini akan
muncul apabila terjadi miss communication antara program dan file yang
dipanggil dalam program, misalnya program itu membutuhkan database yang bernama
db_siswa yang disimpan pada localhost,tapi kenyatannya ternyata si programmer
tidak mempunyai atau belum membuat database tersebut di localhost, program akan
tetap berjalan, namun saat aksi simpan data, hapus data atau tampil data pasti
program akan error.
Exception
terdiri dari dua macam kelompok, yaitu :
a)
Exception yang merupakan subclass RunTimeException.
b)
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. Terdapat beberapa subkelas yang diturunkan dari kelas exception,
yaitu :
· ClassNotFoundException
Terjadi
bila ingin menggunakan kelas yang tidak ada atau belum dibuat.
· CloneNotSupportedException
Terjadi
bila ingin meng-clone atau menggandakan suatu kelas yang tidak didukung oleh
method clone
· RuntimeException
· NullPointerException
· ArrayIndexOutOfBoundsException
· ArithmeticException
· Khusus untuk operasi aritmatika integer.
Seperti pembagian suatu bilangan integer dengan 0
· IOException
Terjadi
bila ada I/O error, seperti gagal menemukan dan membuka file. User memasukkan
input yang tidak valid. Subkelas ini memiliki beberapa subkelas lain, seperti
InterruptedIOException, EOFException, serta FileNotFoundException.
Error
dan Exception Classes
Seluruh
exceptions adalah subclasses, baik secara langsung maupun tidak langsung, dari
sebuah root class Throwable. Kemudian, dalam class ini terdapat dua kategori
umum : Error class dan Exception class.
Exception
class menunjukkan kondisi yang dapat diterima oleh user program. Umumnya hal
tersebut disebabkan oleh beberapa kesalahan pada kode program. Contoh dari
exceptions adalah pembagian oleh 0 dan error di luar jangkauan array.
Error
class digunakan oleh Java run-time untuk menangani error yang muncul pada saat
dijalankan. Secara umum hal ini di luar control user karena kemunculannya
disebabkan oleh run-time environment. Sebagai contoh adalah out of memory dan
harddisk crash.
2.
Keyword
penting pada exception handling
Ada
5 keyword penting dalam java dalam hal exception handling :
a)
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 atau keyword finally.
b) catch.
Jika kita sudah melihat penjelasan try maka secara tidak langsung kita 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. Keyword catch juga dapat diletakan berulang-ulang sesuai dengan
kebutuhan.
c) Finally. Keyword ini merupakan keyword yang
menunjukan bahwa block program tersebut akan selalu dieksekusi meskipun adanya
kesalahan yang muncul atau pun tidak ada.
d)
throw. Keyword ini digunakan untuk
melemparkan suatu bug yang dibuat secara manual.
e)
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 : type method-name throws
exception-list1, exceptio-list2, … {}.
3.
Mekanisme
Mengantisipasi Exceptiom
Berikut
adalah kemungkinan skenario exception :
1. Tidak
terjadi exception
Program
dijalankan, seluruh statement dalam blok try telah dieksekusi dan tidak terjadi
exception sama sekali, maka blok catch tidak akan dieksekusi oleh interpreter.
2. Terjadi
exception pada blok method tunggal
Blok
method tunggal disini adalah bila method itu tidak memanggil statement dari
method yang lain. Bila saat interpreter mengeksekusi block try ada statement
yang menyebabkan excepation, maka interpreter akan langsung keluar dari blok
try, kemudian mencari blok catch yang bersesuaian dengan exception yang
terjadi. Jika interpreter menemukan catch yang sesuai maka interpreter akan
mengeksekusi blok tersebut. Bila tidak ada catch yang sesuai, maka interpreter
akan menghentikan program dan menampilkan pesan exception yang terjadi.
3. Terjadi
exception pada blok method tersarang
Blok
method tersarang maksudnya adalah method yang mendeklarasikan exception (misal
method A) memanggil method lainya ( method B ). Method A memanggil Method B.
Pada saat interpreter mengeksekusi statement dari method B ini, terjadi
exception. Interpreter akan menghentikan eksekusi statement, selanjutnya
mencari catch yang sesuai dalam method B. Bila catch ini tidak ditemukan (
dalam method B ), maka interpreter akan pergi ke meyhod A. Bila di temukan,
maka interpreter akan mengeksekusi blok tersebut, namun bila tidak ada catch
yang sesuai, interpreter akan menghentikan program dan menampilkan pesan
exception.
4. Jenis Exception Handling
1. Try
– Catch
Untuk
penanganan exception, dalam Java digunakan blok try dan catch. Blok try
digunakan untuk menempatkan kode-kode program Java yang mengandung kode program
yang mungkin melemparkan exception. Blok catch digunakan untuk menempatkan
kode-kode program Java yang digunakan untuk menangani sebuah exception
tertentu. Setelah kita tambahkan blok try – catch untuk mengatasi error yang
terjadi, maka program akan menampilkan pesan error bahwa ada error yang terjadi
pada konsol. Sintaks blok try – catch adalah sebagai berikut :
Try
{
…
kode program yang mungkin menghasilkan exception
}
Catch
{exception
xx}{…}
Catch
{exception
xx}{…}
Petunjuk
Penulisan Program :
Blok
catch dimulai setelah kurung kurawal dari kode try atau catch terkait.
Penulisan
kode dalam blok mengikuti identasi.
2. Multiple
Catch
Untuk
multiple catch akan kita gunakan jika blok try mungkin menimbulkan lebih dari
satu exception. Sintaks blok multiple catch adalah sebagai berikut :
try
{
instruksi-1
instruksi-2
instruksi-3
………
diabaikan
instruksi-n
}
catch(tipe_eksepsi_1
e1)
{
}
catch(tipe_eksepsi_2
e2)
{
}
catch(tipe_eksepsi_3
e3)
{
}
….
catch(tipe_eksepsi_n
en)
{
}
instruksi-lain
…….
3. Try
– Catch – Finally
Selain
try – catch, kita dapat mendefinisikan blok try – catch dan finally yang
memiliki proses yang lebih lengkap, karena pada finally kita dapat
mendefinisikan kode program yang selalu dieksekusi, baik ada exception yang
terjadi maupun bila tidak terjadi exception sama sekali. Bentuk umum dari blok
try-catch-finally adalah sebagai berikut
Try
{
//tulis
pernyataan yang dapat mengakibatkan exception
//dalam
blok ini
}
catch(
)
{
//tulis
aksi apa dari program Anda yang dijalankan jika ada
//exception
tipe tertentu terjadi
}
.
. .
catch(
)
{
//tulis
aksi apa dari program Anda yang dijalankan jika ada
//exception
tipe tertentu terjadi
}
Finally
{
//tambahkan
kode terakhir di sini
}
Exception
dilemparkan selama eksekusi dari blok try dapat ditangkap dan ditangani dalam
blok catch. Kode dalam blok finally selalu di-eksekusi. Berikut ini adalah
aspek kunci tentang sintak dari konstruksi try-catch-finally:
·
Notasi
blok bersifat perintah
·
Setiap
blok try, terdapat satu atau lebih blok catch, tetapi hanya satu blok finally.
·
Blok
catch dan blok finally harus selalu muncul dalam konjungsi dengan blok try, dan
diatas urutan.
·
Blok
try harus diikuti oleh paling sedikit satu blok catch atau satu blok finally,
atau keduanya.
·
Setiap
blok catch mendefinisikan sebuah penanganan exception. Header dari blok catch
harus membawa satu argumen, dimana exception pada blok tersebut akan ditangani.
·
Exception
harus menjadi class pelempar atau satu dari subclassesnya.
Try-catch
yang menggunakan finally maka keyword finally tersebut fungsinya hampir sama
dengan keyword default pada switch-case.
Ada
3 sekenario pemrosesan dengan keyword finally yaitu :
Bila
tidak terjadi exception,maka blok finally akan di eksekusi . setelah selesai,
interpreter akan mengeksekusi statement selanjutnya.
Bila
terjadi exception, interpreter akan berhenti mengeksekusi statement dalam blok
try berikutnya. Kemudian, interpreter akan mencari catch yang sesuai. Bila
ditemukan, interpreter akan mengeksekusi catch dan finally.
Bila
exception terjadi, namun tidak ada catch yang sesuai, maka statement –
statemenet try berikutnya yang masih tersisa tidak akan di eksekusi.
Selanjutnya, interpreter akan mengeksekusi blok finally.
BAB
III
PENUTUP
A.
Kesimpulan
Dan itulah tadi pengertian, dan jenis Exception
handling. Exception handling sudah pasti sangat membantu kita saat salah
memasukkan data, program tidak akan langsung tertutup tetapi akan di handling
oleh Exception handling tersebut.