Anda di halaman 1dari 9

MODUL PERKULIAHAN

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

Pemrogramam Berorientasi Objek


Fajar Masya

Pusat Bahan Ajar dan eLearning


http://www.mercubuana.ac.id

pendekatan untuk membuat program yang tangguh

adalah dengan melihat

kemungkinan masalah yang mungkin terjadi dan menambahkan tes/pengujian


pada program tersebut untuk setiap kemungkinan masalah yang mungkin terjadi.
Akan tetapi pendekatan ini mungkin akan memperbesar kode program yang
dibuat dan akan sangat sulit untuk mengantisipasi segala kemungkinan masalah
yang pada program.
Java memiliki metode terstruktur dan rapi dalam menghadapi masalah yang
mungkin terjadi ketika program dijalankan. Metode ini disebut sebagai
penanganan pengecualian (exception-handling). Penanganan eksepsi pada Java
dapat digunakan untuk hal-hal berikut :

Menangani kesalahan dengan menuliskan kode penangan kesalahan yang


terpisah dengan kode yang akan ditangani. Sejumlah pernyataan dapat

ditangani hanya dengan menggunakan sebuah penangan eksepsi.


Menyediakan mekanisme yang memungkinkan untuk menjalankan
kesalahan yang terjadi dalam sebuah metode ke metode yang melakukan

pemanggilan metode tersebut.


Menangani berbagai jenis kondisi yang tidak normal (jenis kesalahan
dapat diketahui).

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

Pemrogramam Berorientasi Objek


Fajar Masya

Pusat Bahan Ajar dan eLearning


http://www.mercubuana.ac.id

{
//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

Pemrogramam Berorientasi Objek


Fajar Masya

Pusat Bahan Ajar dan eLearning


http://www.mercubuana.ac.id

IndexArrayOutOfBounds) dan kesalahan Aritmetika (Arithmetic Exception).


Kesalahan yang tergolong dalam Exception perlu ditangani; misalnya kalau ada
pembagian bilangan dengan nol, program dapat diatur sehingga program tidak
diakhiri (quit program). Berdasarkan kelas diatas jika diketahui berbagai
kemungkinan jenis kesalahan, maka dapat ditangkap berbagai kemungkinan
eksepsi dengan menggunakan catch yang bertingkat dalam catch dan try berikut
ini :
try
{
//Blok yang akan ditangkap sekiranya terjadi eksepsi
}
catch(RuntimeException r)
{
//Blok yang akan dijalankan kalau terjadi RuntimeError
}
catch(Exception e)
{
//Blok yang akan dijalankan kalau terjadi eksepsi Exception
}
catch(Throwable t)
{
//Blok yang akan dijalankan kalau terjadi eksepsi yang lain
}
3. Melempar eksepsi
Java menyediakan pernyataan yang digunakan untuk melontarkan eksepsi, yaitu
berupa pernyataan throw. Bentuk pernyataan ini :
throw variableObject;
Dalam hal ini variableObject menyatakan variable objek yang merujuk ke suatu
kelas eksepsi, untuk melihat efek throw, perhatikan program berikut :
public class UsingExceptions
{
public static void main( String args[] )
{
try
{
throwException();
}
catch ( Exception exception )
{
System.err.println( "Exception handled in main" );
}
doesNotThrowException();
}

1
3

Pemrogramam Berorientasi Objek


Fajar Masya

Pusat Bahan Ajar dan eLearning


http://www.mercubuana.ac.id

public static void throwException() throws Exception


{
try
{
System.out.println( "Method throwException" );
throw new Exception();
}
catch ( Exception exception )
{
System.err.println("Exception handled in method throwException" );
throw exception;
}
finally
{
System.err.println( "Finally executed in throwException" );
}
}
public static void doesNotThrowException()
{
try
{
System.out.println( "Method doesNotThrowException" );
}
catch ( Exception exception ) // does not execute
{
System.err.println( exception );
}
finally
{
System.err.println("Finally executed in doesNotThrowException" );
}
System.out.println( "End of method doesNotThrowException" );
}
}
4. Assertion
Assertions mengijinkan programmer untuk menentukan asumsi yang dihadapi.
Sebagai contoh, sebuah tanggal dengan area bulan tidak berada antara 1 hingga 12
dapat diputuskan bahwa data tersebut tidak valid. Programmer dapat menentukan
bulan harus berada diantara area tersebut. Meskipun hal itu dimungkinkan untuk
menggunakan contructor lain untuk mensimulasikan fungsi dari assertions, namun
sulit untuk dilakukan karena fitur assertion dapat tidak digunakan. Hal yang
menarik dari assertions adalah seorang user memiliki pilihan untuk digunakan

1
3

Pemrogramam Berorientasi Objek


Fajar Masya

Pusat Bahan Ajar dan eLearning


http://www.mercubuana.ac.id

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

<expression2> adalah informasi yang membantu pemeriksaan mengapa


program mengalami kesalahan.
Contoh :
import java.util.Scanner;
public class AssertTest
{
public static void main( String args[] )
{
Scanner input = new Scanner( System.in );
System.out.print( "Enter a number between 0 and 10: " );
int number = input.nextInt();
assert ( number >= 0 && number <= 10 ) : "bad number: " + number;
System.out.printf( "You entered %d\n", number );
}
}

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

Pemrogramam Berorientasi Objek


Fajar Masya

Pusat Bahan Ajar dan eLearning


http://www.mercubuana.ac.id

int result = quotient( numerator, denominator );


System.out.printf( "\nResult: %d / %d = %d\n", numerator,
denominator, result );
continueLoop = false; // input successful; end looping
}
catch ( InputMismatchException inputMismatchException )
{
System.err.printf( "\nException: %s\n",inputMismatchException );
scanner.nextLine();
System.out.println("You must enter integers. Please try again.\n" );
}
catch ( ArithmeticException arithmeticException )
{
System.err.printf( "\nException: %s\n", arithmeticException );
System.out.println("Zero is an invalid denominator. Please try
again.\n" );
}
} while ( continueLoop );
}
}

1
3

Pemrogramam Berorientasi Objek


Fajar Masya

Pusat Bahan Ajar dan eLearning


http://www.mercubuana.ac.id

Daftar Pustaka

1. Dasar Pemrograman Java 2, Abdul Kadir,Penerbit Andi,2005


2. Esensi-esensi Bahasa Pemograman Java oleh Bambang Hariyanto, Ir., MT
3. Java How to Program, Deitel H.M , Prentice Hall,2004
4. http:/www.sun.com
5. http://www.java.com

1
3

Pemrogramam Berorientasi Objek


Fajar Masya

Pusat Bahan Ajar dan eLearning


http://www.mercubuana.ac.id

Anda mungkin juga menyukai