Ketika menjalankan sebuah program,
tidak jarang ditemukan sebuah kesalahan yang terjadi dalam program tersebut.
Kesalahan itu bisa berasal dari hardware, software, atau bahkan dalam algoritma
atau kesalahan logika itu sendiri. Masing - masing kesalahan punya solusi yang
berbeda - beda dan teknik penanganannya juga berbeda - beda untuk setiap
kesalahan yang satu dengan yang lain
1.
Macam macam error
a.
Syntax error (kesalahan sintaksis)
Syntax error adalah sebuah error yang
terjadi karena ada aturan bahasa pemrograman yang tidak ditaati, dan error
jenis ini akan dideteksi oleh compiler. Error jenis ini mudah untuk dicari dan
diperbaiki karena compiler akan memberitahukan di mana error terjadi dan
mengapa error bisa terjadi. Sintaks mendefinisikan suatu bentuk program yang
benar dari suatu bahasa.
b.
Logical error (kesalahan logika)
Logical error adalah sebuah error
yang terjadi ketika program bekerja tidak sesuai dengan tujuan dari pembuatan
program itu. Error jenis ini ditangani dengan debugging. Logical error adalah
jenis kesalahan secara logika. Jika ditemukan kesalahan dengan jenis ini,
proses tetap dilanjutkan, namun tidak berjalan sebagaimana mestinya.
c.
Runtime error
Runtime error terjadi ketika program
dijalankan. Runtime error merupakan gangguan atau masalah yang terjadi ketika
sebuah program komputer dijalankan. Misalnya user memasukkan input yang salah,
program mengakses elemen array di luar indeksnya, atau yang lainnya. Karena
berbagai kesalahan biasanya dikelompokkan dalam istilah kolektif kesalahan
runtime, sistem operasi biasanya menyediakan beberapa informasi tentang sifat
kesalahan yang telah terjadi. Pesan ini memberikan informasi tentang apakah
komponen telah gagal untuk menjalankan sebuah program Runtime error dapat
terjadi karena beberapa kesalahan / kerusakan yang serius dalam program. atau
hal ini bisa diatasi dengan restart komputer dari awal lagi. Namun, ketika
error terus - menerus muncul, hal yang harus dilakukan dengan cara mengecek
pada sistem operasi.
2.
Reaksi kompilator (compiler) pada
kesalahan
a.
Reaksi yang tidak dapat diterima
1)
Kompilator tidak melaporkan
kesalahan dikarenakan kompilator crash / hang atau berhenti secara tiba - tiba
di tengah jalan.
2)
Kompilator berjalan, namun tidak pernah
berakhir karena mengerjakan proses pengulangan ( looping ) yang tidak terhingga
( indefinitelonbounded loop).
3)
Menghasilkan program objek yang
salah, yaitu kompilator melanjutkan proses sampai selesai tetapi program objek
yang dihasilkan salah. Hal ini berbahaya karena kesalahan baru akan muncul pada
saat program dieksekusi.
b.
Reaksi yang kurang dapat diterima
atau kurang bermanfaat
Jika terdapat beberapa kesalahan pada
kode program, kompilator menemukan kesalahan hanya satu saja setiap kali
dilakukan proses kompilasi. Proses kompilasi akan dilakukan secara
berulang.
c.
Reaksi yang dapat diterima
Kompilator melaporkan kesalahan dan
selanjutnya melakukan hal berikut.
1)
Pemulihan ( recovery ), dilanjutkan
dengan menemukan kesalahan lain apabila masih ada.
2)
Perbaikan ( repair ), dilanjutkan
dengan proses translasi dan menghasilkan program objek yang valid.
B.
Exception
Secara harfiah, " exception
" artinya adalah pengecualian. Dalam pemrograman, exception merupakan
kondisi yang akan muncul jika suatu program tidak sukses dijalankan, atau
dengan kata lain, user tidak mengisi input sesuai syarat yang berlaku. Selain
itu, exception juga dapat diartikan suatu konstruksi suatu bahasa khusus untuk
menangani keadaan yang tidak terduga ( biasanya adalah error ), yaitu status
keadaan error. Selama program berjalan, dapat terjadi sesuatu hal yang
menyebabkan error. Misalnya, array diberi nilai indeks yang melebihi nilai
indeks yang sudah dideklarasikan, atau suatu operasi aritmetika yang membagi
suatu bilangan dengan nol. Hal ini dapat mengakibatkan program berhenti tidak
seperti yang diinginkan dan biasanya menainpilkan pesan kesalahan yang tidak
jelas.
Penjelasan
tentang exception sebagai berikut.
1.
Kategori exception
Java menyediakan dua kategori besar
untuk exception, yaitu checked exception dan unchecked exception.
a.
Checked exception
Checked exception merupakan exception yang diantisipasi
oleh programmer untuk ditangani dalam program dan terjadi dikarenakan oleh
kondisi luar yang siap muncul saat program berjalan. Misalnya membuka file yang
tidak ada atau karena gangguan jaringan.
b.
Unchecked exception
Unchecked exception merupakan exception yang bisa muncul
dari kondisi yang merepresentasikan adanya bug atau situasi yang secara umum
dianggap terlalu sulit bagi program untuk menanganinya. Disebut sebagai
unchecked karena tidak perlu mengeceknya atau melakukan sesuatu jika kondisi
ini terjadi. Exception yang muncul dari kategori situasi yang merepresentasikan
bug ini disebut sebagai runtime exception. Misalnya mengakses array melebihi
ukuran yang dimilikinya. Sedangkan exception yang muncul sebagai akibat dari
isu environtment software ( yang ini jarang sekali atau sulit ditangani )
disebut error, misalnya kehabisan memori.
2.
Class exception dan class error
Kata " exception " sering
dibandingkan dengan kata " error ". Di dalam exception termasuk semua
keadaan yang muncul di dalam program yang sedang dieksekusi, sebuah exception
dapat berupa error atau hanya kasus khusus. Ketika sebuah exception muncul
selama eksekusi program, dikatakan bahwa exception telah dilempar ( exception
is thrown ) sehingga program diberhentikan dan program bisa rusak.
Class - class exception dapat diklas
fikasikan menjadi tiga tipe utama, yaitu class Error, class Exception, dan
class RuntimeException.
a.
Class Error
Class Error adalah class dasar yang digunakan untuk
mendeskripsikan kondisi error serius yang jarang terdeteksi. Error semacam ini
jarang terjadi. Jika terjadi, kita dapat memberitahukan kepada user dan
menghentikan program secara normal.
b.
Class Exception
Class Exception adalah sebuah class dasar yang mendeskripsikan
error error yang diakibatkan oleh program kita dan oleh lingkungan luar. Error
ini ditangkap dan ditangani oleh program kita. Class ini merepresentasikan
checked exception. Dalam hal ini, bukannya membiarkan terjadi pemberhentian
program, tetapi sebaliknya yaitu Anda harus menuliskan beberapa kode untuk
menangani exception dan kemudian melanjutkan program.
c.
Class RuntimeException
Class Runtime Exception adalah class dasar yang
digunakan untuk mendeskripsikan kesalahan pemrograman, seperti casting (
pelemparan ) yang salah, pengaksesan array di luar batas, dan kesalahan numerk.
Exception runtime dilempar oleh JVM. Class ini digunakan untuk menangani
unchecked exception yang bisa muncul sebagai akibat dari bug program. Pada
banyak kasus, Anda harus membiarkan program dihentikan.
3.
Keuntungan menggunakan exception
Ada beberapa keuntungan yang didapatkan dengan
menggunakan exception , yaitu sebagai berikut.
a.
Dengan fasilitas pemisahan kode
utama dan kode error handling memungkinkan bagi kita untuk berkonsentrasi
terhadap bagian - bagian tersebut pada pemrograman tradisional, deteksi error,
pelaporan, dan penanganan error menimbulkan kompleksitas program semakin
tinggi. Exception memungkinkan untuk menulis alur logika program utama dan menangani
kasus khusus di tempat lain.
b.
Adanya mekanisme propagasi laporan
error melalui method - method di call stack.
c.
Dalam exception , ada
pengelompokan dan perbedaan tipe error. Karena semua exception yang dilempar
adalah objek , pengelompokan dan kategorisasi dapat dilakukan menurut hierarki
class Contoh pengelompokan berdasarkan hierarki class tersebut dapat dilihat di
java.io.IOException dan turunannya. IOException adalah class Exception yang
paling umum untuk menangani error input dan output. Turunan class ini
diperuntukkan bagi jenis error yang lebih spesifik. Misalnya
FileNotFoundException menandakan bahwa file tidak ditemukan di disk.
4.
Assertions
Assertions mengizinkan programmer
untuk menentukan asumsi yang dihadapi. Sebagai contoh, sebuah tanggal dengan
area bulan tidak berada antara 1 hingga 12 harus dapat diputuskan bahwa data
tersebut tidak valid. Programmer dapat menentukan bulan harus berada di antara
area tersbut. Meskipun hal itu dimungkinkan menggunakan konstruktor lain untuk
mensimulasikan fungsi dari assertions, namun sulit untuk dilakukan karena fitur
assertion dapat tidak digunakan. Hal yang menarik dari assertion adalah seorang
user memiliki pilihan untuk digunakan atau tidak pada saat runtime.
C.
Exception Handling
Exception handling adalah suatu
mekanisme penanganan error yang mungkin terjadi dalam suatu program. Misalnya
sebuah program yang memiliki operasi pembagian, di mana suatu ketika user
menginputkan bilangan pembagi atau denumerator, maka program tersebut harus
memiliki suatu exception handling untuk menangani kasus tersebut. Contoh kasus
lain di antaranya akses keyboard, akses CD ROM, akses file, dan akses database.
Sehingga apabila alat - alat yang kita butuhkan dalam program tersebut tiba -
tiba terputus aksesnya, maka program tidak secara tiba - tiba akan mati dan
agar program kita dapat terus berjalan.
Dalam pemrograman Java, ketika
terjadi kesalahan, otomatis akan dilemparkan sebuah objek 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.
Dengan menggunakan exception
handling, kita dapat mencegah terjadinya runtime error yang menyebabkan program
kita berhenti di tengah jalan. Exception yang dilempar perlu ditangani menggunakan
exception handler dan diproses. Untuk mengimplementasikan exception handling
digunakan lima keyword. yaitu try, catch, finally, throw, dan throws.
Penjelasannya sebagai berikut
1. Try – Catch
Untuk menangkap kesalahan pada
pemrograman Java, digunakan blok try - catch. Blok try digunakan untuk
menempatkan kode - kode program yang mengandung kode program yang mungkin
melemparkan exception. Sedangkan blok catch digunakan untuk menempatkan kode -
kode program Java yang digunakan untuk menangani sebuah exception tertentu.
2. Blok finally
Keyword finally merupakan keyword
yang menunjukkan bahwa blok program tersebut akan selalu dieksekusi meskipun
ada kesalahan yang muncul ataupun tidak ada. Blok finally merupakan blok yang
selalu dijalankan pada proses try - catch, baik itu terjadi error ataupun
tidak. Blok finally terdapat pada bagian akhir try catch. Statement yang berada
di dalam blok finally akan dieksekusi paling akhir ketika sedang mengeksekusi
blok try, meskipun tidak ada exception yang muncul atau ada exception yang
muncul. Statement finally digunakan untuk melakukan sesuatu yang penting ketika
terdapat exception atau tidak.
3. Throws
Jika method tidak dapat menangani
exception, maka method tersebut harus mendeklarasikan jenis exception yang
mungkin dilemparkan menggunakan kata throws. Kata throws digunakan pada bagian
deklarasi method. Keyword throws akan diikuti daftar tipe exception yang
mungkin dilempar oleh sebuah method. Keyword ini perlu dipakai untuk semua
exception, kecuali exception dari class Exception dan RuntimeException termasuk
turunannya.
4. Throw
Keyword Throw digunakan untuk
melemparkan suatu bug yang dibuat secara manual. Anda dapat melempar exception
atau objek exception baru atau exception yang baru saja ditangkap dengan
menggunakan keyword throw. Misalnya saat kita membuat sebuah program dan user
salah memasukkan input, tetapi program tidak menandakan bahwa itu terjadi
kesalahan ( error ), karena input yang dimasukkan tidak berpotensi akan terjadi
error.
5. Melontarkan exception
Adakalanya dibutuhkan kode program
untuk melempar exception pada program yang kita buat. Hal ini terjadi jika di
dalam program ditemukan beberapa pengecualian atau kondisi error, tetapi tidak
ada alasan untuk menangani error tersebut di mana permasalahan ditemukan.
Program dapat melempar sebuah exception dengan harapan dapat ditangkap dan
ditangani oleh blok catch. Hal ini dapat dilakukan dengan melempar exception
secara eksplisit dengan menggunakan statement throw.
6. User defined exception
User defined exception merupakan
exception yang dibuat oleh programmer sesuai dengan permintaan pada aplikasi.
Statement throw, throws, try, catch, dan finally digunakan dalam
mengimplementasikan user defined exception. Class Exception menuruni semua
method yang ada di dalam class Throwable. User defined exception juga menuruni
semua method yang didefinisikan di dalam class Throwable.
RANGKUMAN
1.
Exception adalah event yang
terjadi ketika program menemui kesalahan pada saat instruksi program
dijalankan.
2.
Exception handling
merupakan fasilitas di Java yang memberikan fleksibilitas kepada developer
untuk menangkap bug atau kesalahan yang terjadi ketika program berjalan.
3.
Dalam exception handling
ada lima keyword penting yang digunakan, yaitu Try, Catch, Finally, throw , dan
throws.
Sumber : Wijayanti Hanifah.
Pemroggraman Berorientasi Objek. Surakarta. CV Putra Nugraha.
0 Comments