Exception adalah suatu keadaan yang menyebabkan program hang atau keluar dari alur normal pada saat program dijalankan. Exception handling merupakan mekanisme untuk menangkap bug atau kesalahan pada saat program sedang berjalan.
Keyword
pada Exception Handling
-Try
Blok
try digunakan untuk menempatkan kode-kode program java yang memungkinkan
terjadinya exception.
-Catch
Blok
catch digunakan untuk menangkap kesalahan yang terjadi pada blok try
-Finally
Kode
program pada blok finally akan selalu dijalankan, tidak peduli apakah terjadi
ekssepsi atau tidak
-Throw
Keyword
throw digunakan untuk melempar exception yang terjadi
-Throws
Keyword
yang digunakan dalam suatu method atau kelas yang mungkin menghasilkan suatu
kesalahan sehingga perlu ditangkap errornya.
Kelas
exception memiliki beberapa metode-metode, antara lain :
·
Metode public
String getMessage() : mengembalikan
detail informasi mengemai exception yang terjadi, informasi ini diinisialisasi
oleh konstruktor yang dimiliki Throwable.
·
Metode public
Throwable getCause() : menampilkan
penyebab dari exception.
·
Metode public
String toString() : mendapatkan
nama exception ditambah informasinya.
·
Metode public
void printStackTrace : menampilkan
hasil toString() beserta stack trace System.err.
·
Metode public
StackTraceElement[]getStackTrace() : mengembalikan
array yang berisi semua elemen di stack trace, elemen ke 0 mewakili bagian atas
call stack dan elemen akhir array mewakili bagian akhir call stack.
·
Metode public
Throwable fillInStackTrace() : mengisi stack trace dari object Throwable dengan stack trace yang
terdeteksi, menambah ke dalam stack trace.
Array Dua Dimensi
Throw
Script Program:
import java.util.Scanner;
public class tugas2 {
public static void main(String[] args){
Scanner input = new Scanner(System.in);
int kol;
System.out.println("Kol yang harus diinput = 3");
try{
System.out.print("Jumlah kol: ");
kol = input.nextInt();
if(kol > 3){
throw new Exception("Terjadi Kesalahan!");
}else{
System.out.println("---");
}
}catch(Exception e){
e.printStackTrace();
}
}
}
Output Program:
Kol yang harus diinput =
3
Jumlah kol: 5
java.lang.Exception:
Terjadi Kesalahan!
at
Exception.tugas2.main(tugas2.java:23)
Throws
Script Program:
class KelasAsing{
static void test() throws ClassNotFoundException{
System.out.println("Ada Yang Error!");
throw new ClassNotFoundException("Sudah ditangkap");
}
}
public class thrws {
public static void main(String[] args){
try{
KelasAsing.test();
}catch(Exception e){
e.printStackTrace();
}
}
}
Program ini mengimplementasikan penggunaan kata kunci throw dan throws. Pada program throw, jika user menginputkan jmlah kol lebih dari 3, maka akan terjadi error, exception/error yang telah di tangkap oleh blok try akan diubah menjadi objek (e) pada statement catch lalu menampilkan pesan error tersebut menggunakan method printStackTrace(). Pada program throws, menunjukkan bahwa method test() tidak menangani ClassNotFoundException, dengan menggunakan kata kunci throws, memberitahukan bahwa method tersebut dapat menyebabkan sebuah exception, lalu dicek pada bagian try lalu ditangkap dan ditampilkan pada bagian catch.
Exception
Script Program:
public class BagiNol {
public static void main(String[]args){
System.out.println("Sebelum Pembagian");
System.out.println(5/0);
System.out.println("Sesudah Pembagian");
}
}
Output Program:
Sebelum Pembagian
Exception in thread
"main" java.lang.ArithmeticException: / by zero
at
Exception.BagiNol.main(BagiNol.java:15)
Java Result: 1
.Percobaan
pertama ialah membuat sebuah class tanpa exception untuk melihat dimana letak
kesalahan dan perbedaan menggunakan exception dengan tidak menggunakan
exception. Pada percobaan pertama ini tidak dapat dieksekusi karena
ada kesalahan dalam pembagian bilangan dengan nol.
Exception (2)
Script Program:
public class BagiNol2 {
public static void main(String[]args){
System.out.println("Sebelum Pembagian");
try{ System.out.println(5/0);}
catch (Exception t){
System.out.println("Pesan Kesalahan: ");
System.out.println(t.getMessage());
}
System.out.println(" Sesudah Pembagian");
}
}
Output Program:
Sebelum Pembagian
Pesan Kesalahan:
/ by zero
Sesudah Pembagian
Percobaan kedua ialah membuat sebuah class
dengan exception. Digunakan program yang sama seperti percobaan pertama namun
untuk percobaan ini menggunakan try dan catch untuk menangkap exception pada
kode program yang terdapat masalah
Exception (3)
Script Program:
public class MultiCatchException {
public static void main(String[]args){
try{ System.out.println(5/0);
}
catch(ArithmeticException e){
System.out.println(0);
}
catch(ArrayIndexOutOfBoundsException e){
System.out.println(1);
}
catch(Exception e){
System.out.println(2);
}
}
}
}
Output Program:
0
Percobaan
ketiga menggunakan lebih dari satu catch, masih dengan kode program kedua.
Namun pada program ini exception ditangkap dengan dua exception arithmatik dan
exception index array dan kesalahan ditampilkan dalam sebuah message. Pada
array ini, dikarenakan kesalahan terdapat pada proses aritmatik maka aritmatik
exceptionlah yang mengeksekusi.
Exception (4)
Script Program:
public class MultiCatchException {
public static void main(String[]args){
try{ System.out.println(5/0);
}
catch(ArithmeticException e){
System.out.println(0);
}
catch(ArrayIndexOutOfBoundsException e){
System.out.println(1);
}
catch(Exception e){
System.out.println(2);
}
finally{
System.out.println(3);
}
}
}
}
Output Program:
0
3
Pecobaan
keempat menggunakan statement finally. Apabila terdapat statement finally maka
satu blok catch yang menangkap exception akan dieksekusi dan finally juga akan
mengeksekusi mengikuti alur dari program.
Exception (5)
Script Program:
public class Latihan {
public static void main(String[] args) {
try {
String myString = "i";
int angka = Integer.parseInt(myString);
System.out.println(angka);
}catch (NumberFormatException e) {
System.out.println("Terjadi kesalahan");
}
}
}
Program exception handling untuk tipe exception
lain. dibuat exception untuk NumberFormatException, dimana tipe data yang
digunakan hanya berformat numerik.
Kesimpulan
Semua
kelas exception adalah subclass dari java.langException. Kelas exception
sendiri merupakan kelas turunan dari kelas Throwable. Selain kelas exceptiom,
ada juga kelas error yang juga diturunkan dari kelas Throwable.
Exception
Handling adalah mekanisme yang digunakan jika ada suatu kondisi yang tidak
diinginkan terjadi ketika program sudah dijalankan (kondisi abnormal) yang
kemudian dapat diproses lebih lanjut oleh fungsi-fungsi yang siap menangani
kesalahan tersebut.
Pada
prinsipnya, eksepsi adalah suatu objek, yang diturunkan dari kelas
java.lang.Throwable.
Ketika
error terjadi di suatu method, maka method tersebut akan membuat object yang
kemudian dikirim ke runtime system. Object ini yang disebut sebagai exception objek,
mengandung informasi tentang error yang terjadi, termasuk tipe dan kondisi
program pada saat error terjadi.
Proses
pembuatan exception object dan kemudian mengirimnya ke runtime system ini
disebut sebagai “throwing an exception (melemparkan exception)”. Setelah method
melemparkan exception, runtime system akan berusaha untuk mencari solusi untuk
menangani masalah yang ada. Solusi yang ada bisa jadi lebih dari satu. Oleh
karena itu, runtime system akan memilih berdasarkan suatu urutan yang berdasar
pada method tempat terjadinya error dan atau method lain yang memanggil method
tersebut.


0 comments:
Post a Comment