Pemrograman
Berorientasi
Objek
Fakultas
Program
Studi
Tatap
Muka
Kode MK
Disusun Oleh
FASILKOM
Sistem
Informasi
10
18009
Fajar Masya
Exception
1. Eksepsi
Dalam programming dikenal dua jenis error yang umum terjadi. Error pada saat
kompilasi dan error pada saat program berjalan (runtime ). Kesalahan pada saat
kompilasi umummnya terjadi karena kesalahan sintak. Kesalahan yang terjadi
pada saat run time kadang membuat program berhenti,kemudian menampilkan
pesan kesalahan yang terjadi. Kesalahan yang mungkin terjadi tentu saja
bermacam-macam. Misalnya, terjadi pembagian suatu bilangan dengan nol,
hingga memori habis ketika diperlukan untuk memberntuk objek. Program berikut
akan berhenti jika user menginputkan nilai 0 pada deminator.
import java.util.Scanner;
public class DivideByZeroNoExceptionHandling
{
public static int quotient( int numerator, int denominator )
{
return numerator / denominator;
}
public static void main( String args[] )
{
Scanner scanner = new Scanner( System.in );
System.out.print( "Please enter an integer numerator: " );
int numerator = scanner.nextInt();
System.out.print( "Please enter an integer denominator: " );
int denominator = scanner.nextInt();
int result = quotient( numerator, denominator );
System.out.printf("\nResult: %d / %d = %d\n", numerator, denominator,
result );
}
}
Untuk mengatasi kesalahan sewaktu program dieksekusi, Java menyediakan
penanganan eksepsi. Dalam hal ini Java akan melontarkan suatu eksepsi
sekiranya terdapat suatu kesalahan sewaktu program dijalankan.
Eksepsi adalah indikasi dari masalah yang terjadi saat suatu program dijalankan.
Eksepsi menyiratkan bahwa telah terjadi masalah yang tidak biasa pada bagian
dari program yang sebelumnya tidak bermasalah. Program yang tangguh dapat
tahan dari kondisi yang tidak biasa atau dalam kondisi "pengecualian". Salah satu
1
3
2. Menangkap eksepsi
Ketika pengecualian terjadi dalam eksekusi suatu program, kita sebut bahwa
pengecualian tersebut di-lempar-kan (thrown). Ketika ini terjadi, aliran program
terlempar dari jalurnya, dan program berada dalam bahaya akan crash. Akan tetapi
crash bisa dihindari jika pengecualian tersebut ditangkap (catch) dan ditangani
dengan cara tertentu. Suatu pengecualian dapat dilempar oleh satu bagian program
dan ditangkap oleh bagian program lain. Pengecualian yang tidak ditangkap
secara umum akan menyebabkan program berhenti. Agar kesalahan karena
eksepsi dapat dikendalikan, eksepsi perlu ditangkap,. Untuk keperluan
menangkap eksepsi, Java menyediakan pernyataan try. Pernyataan ini mempunyai
dua bentuk.
Bentuk pertama :
try
{
//Blok yang akan ditangkap sekiranya terjadi eksepsi
}
catch(parameter)
1
3
{
//Blok yang akan dijalankan kalau terjadi eksepsi
}
Bentuk kedua :
try
{
//Blok yang akan ditangkap sekiranya terjadi eksepsi
}
finally
{
//Blok yang akan dijalankan kalau terjadi eksepsi
}
Pada bentuk di atas, bagian finally akan dijalankan, tidak tergantung apakah
bagian blok try mengalami eksepsi maupun tidak.
Selain bentuk penganganan kesalahan diatas, Java juga menyediakan berbagai
kelas yang berhubungan dengan eksepsi. Dengan kelas tertinggi kelas Throwable.
Dari gambar diatas terdapat subkelas dengan nama Error dan Exception. Subkelas
Error antara lain digunakan untuk menangani kesalahan seperti memory habis
(OutOfMemoryError) dan stack habis (StackOverflowError). Kesalahan seperti
ini biasanya tidak perlu ditangani; atau dengan kata lain program segera diakhiri
kalau menemukan eksepsi seperti ini. Subkelas Exception antara lain memiliki
subkelas RuntimeException, yang digunakan untuk menangani kesalahan seperti
indeks array yang tidak valid (indeks array melebihi jumlah indeks,
1
3
1
3
1
3
atau tidak pada saat runtime. Penulisan assertions memiliki dua bentuk. Bentuk
yang paling sederhana terlihat sebagai berikut :
assert <expression1>;
dimana <expression1> adalah kondisi dimana assertion bernilai true.
Atau
assert <expression1> : <expression2>;
dimana <expression1> adalah kondisi assertion bernilai true
dan
Soal
1. Praktek, ketik program berikut
import java.util.InputMismatchException;
import java.util.Scanner;
public class DivideByZeroWithExceptionHandling
{
public static int quotient( int numerator, int denominator )
throws ArithmeticException
{
return numerator / denominator;
}
public static void main( String args[] )
{
Scanner scanner = new Scanner( System.in );
boolean continueLoop = true;
do
{
try
{
System.out.print( "Please enter an integer numerator: " );
int numerator = scanner.nextInt();
System.out.print( "Please enter an integer denominator: " );
int denominator = scanner.nextInt();
1
3
1
3
Daftar Pustaka
1
3