Anda di halaman 1dari 21

LAPORAN VI

PRAKTIKUM PEMROGRAMAN BERBASIS OBJEK

Disusun untuk Memenuhi Matakuliah Praktikum Pemrograman Berbasis Objek Yang Dibimbing
oleh Bapak Azhar Ahmad Smaragdina,
Asisten Praktikum:
Tantri Hari Mukti
Endah Puji Rohmawati
Wildan Setyo

oleh :
YUSI NUR AISYAH
130533608107
S1 PTI F 2013

PRODI S1 PENDIDIKAN TEKNIK INFORMATIKA


JURUSAN TEKNIK ELEKTRO
FAKULTAS TEKNIK
UNIVERSITAS NEGERI MALANG
NOVEMBER 2014

LAPORAN VI
EXCEPTION HANDLING
A. TUJUAN
1. Mahasiswa mengetahui penanganan kesalahan program dengan exception handling.
2. Mahasiswa mampu menerapkan exception handling.
3. Mahasiswa mampu membedakan penerapan jenis exception handling.
4. Mahasiswa mampu membuat class exception sendiri.
5. Mahasiswa mampu melakukan input data melalui keyboard.
B. DASAR TEORI
1. Exception Handling
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.
Exception juga bisa dikatakan sebagai sebuah peristiwa yang menjalankan alur proses
normal pada program. Peristiwa ini biasanya berupa kesalahan(error) dari beberapa bentuk.
Ini disebabkan program kita berakhir tidak normal. Beberapa contoh dari exception yang
Anda mungkin jumpai pada latihan-latihan sebelumnya adalah: exception
ArrayIndexOutOfBounds, yang terjadi jika kita mencoba mengakses elemen array yang
tidak ada, atau NumberFormatException, yang terjadi ketika kita mencoba melalui
parameter bukan angka dalam method Integer.parseInt.
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.
Exception ini dipicu oleh Runtime Error yakni error yang terjadi pada saat program dieksekusi
oleh interprenter. Untuk mengantisipasi dapat ditambah statement yang akan memeriksa data
yang menyebabkan Runtime Error. Meskipun statement tambahan ini bersifat optional, namun
statement ini berguna untuk mencegah program menjadi hang atau quit hanya karena user salah
memasukkan data.
Ada 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.
1
S1 Pend. Teknik Informatika 2013 OFF F

2. Keyword pada Exception Handling


a. Try
Blok try digunakan untuk menempatkan kode-kode program Java yang memungkinkan
terjadinya exception.
b. Catch
Blok catch digunakan untuk menangkap kesalahan yang terjadi pada blok try.
c. Finally
Kode program pada blok finally akan selalu dijalankan, tidak peduli apakah terjadi
eksepsi atau tidak.
d. Throw
Keyword throw digunakan untuk melempar exception yang terjadi.
e. Throws
Keyword throws digunakan dalam suatu method atau kelas yang mungkin menghasilkan
suatu kesalahan sehingga perlu ditangkap errornya.
3. Jenis Exception Handling :
Try Catch
Multiple Catch
Try-Catch-Finally
4. Menangani Exception
Untuk menangani exception dalam Java, kita gunakan blok try-catch-finally. Apa yang
kita lakukan dalam program kita adalah kita menempatkan pernyataan yang mungkin
menghasilkan exception dalam blok ini. Bentuk umum dari blok try-catch-finally adalah,
try{
//tulis pernyataan yang dapat mengakibatkan exception
//dalam blok ini
}
catch( <exceptionType1> <varName1> ){
//tulis aksi apa dari program Anda yang dijalankan jika ada
//exception tipe tertentu terjadi

} catch( <exceptionTypen> <varNamen> ){

//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.
2
S1 Pend. Teknik Informatika 2013 OFF F

Marilah mengambil contoh kode yang mencetak argumen kedua ketika kita mencoba
menjalankan kode menggunakan argumen command-line. Perkirakan, tidak ada pengecekan
dalam kode Anda untuk angka dari argumen dan kita hanya mengakses argumen kedua
args[1] segera, kita akan mendapatkan exception berikut.
Exception in thread "main"
java.lang.ArrayIndexOutOfBoundsException: 1
at ExceptionExample.main(ExceptionExample.java:5)

Untuk mencegah kejadian ini, kita dapat menempatkan kode ke dalam blok try-catch.
Blok finally hanya sebagai pilihan lain saja. Sebagai contoh, kita tidak akan menggunakan
blok finally.
public class ExceptionExample
{
public static void main( String[] args ){
try{
System.out.println( args[1] );
}catch( ArrayIndexOutOfBoundsException exp ){
System.out.println("Exception caught!");
}
}
}

Jadi kita akan menjalankan program lagi tanpa argumen, keluarannya akan menjadi,
Exception caught!.

C. LATIHAN
1. Latihan 1 : Tanpa Exception Handling
Source code : DivByZero.java
class DivByZero {
public static void main(String args[]){
System.out.println(5/0);
System.out.println("Ini adalah keluaran program");

3
S1 Pend. Teknik Informatika 2013 OFF F

}
}

a. Output program adalah

b. Ciri-ciri program yang tidak menggunakan exception handling :


- Program akan berhenti seketika saat error ditemukan. Sehingga event2 setelah baris
yang error tidak akan dieksekusi. Terbukti dengan tidak dijalankannya blok
System.out.println("Ini adalah keluaran program");

Blok script program yang berpotensi menimbulkan exception, tidak di dalam blok try.
Tidak ada blok cacth yang berguna untuk menangkap exception yang terjadi, yang berisi
blok kode program yang akan dijalankan agar program tetap berjalan serta dicantumkan
jenis exceptionnya.
Deskrisi Program:
Pada contoh program latihan 1, terdapat blok program yang menimbulkan exception, namun
tidak terdapat exception handling yang dilakukan. Sehingga ketika kita menjalankan
programnya langsung berhenti serta output program selanjutnya tidak ditampilkan dan terdapat
warning jenis exception yang terjadi oleh compiler. Pesan eror yang muncul tersebut
menginformasikan tipe exception yang terjadi pada baris dimana exception itu berasal. Inilah
aksi default yang terjadi bila terjadi exception yang tidak tertangani. Jika tidak terdapat kode
yang menangani exception yang terjadi, aksi default akan bekerja otomatis. Aksi tersebut
pertama-tama akan menampilkan deskripsi exception yang terjadi. Kemudian akan
ditampilkan stack trace yang mengindentifikasi method dimana exception terjadi. Pada bagian
akhir, aksi default tersebut akan menghentikan program secara paksa.

2. Latihan 2 : Dengan Exception Handling


Source code : DivByZeroWithException.java
class DivByZeroWithException {
public static void main(String args[]) {
try {
System.out.println(5/0);
System.out.println("Keluaran program");
}
catch (ArithmeticException exc) {
//dibagi dengan 0 -> ArithmeticException
System.out.println("Exception yang ditangkap : "+exc);
}
System.out.println("Setelah exception.");
}
}

a. Output program adalah


4
S1 Pend. Teknik Informatika 2013 OFF F

Deskripsi Program:
Di dalam program latihan 2 ini terdapat penggunaan konsep exception handling dimana
terdapat blok program yang akan menimbulkan exception di dalam try berupa pembagian
bilangan dengan nol. Sehingga program yang seharusnya terminated sudah di catch bertipe
arithmaticException lalu output program yang seharusnya ada di dalam blok try akan di skip
setelah terjadi kesalahan menjadi hasil dari blok catch dan blok setelah try-catch itu sendiri
namun program tetap berjalan.

3. Latihan 3 : Multiple Catch


Source code : multiplecatch.java
public class multiplecatch {
public static void main (String args []) {
try
{
int a=5/0; //berpotensi untuk menimbulkan kesalahan yaitu
pembagian dengan bilangan 0
int num = Integer.parseInt(args[0]);
System.out.println("Perintah selanjutnya...");
}
catch(ArrayIndexOutOfBoundsException e){
}
catch(NullPointerException e) {
}
catch(Exception e) {
}
}
}

a. Output program adalah:

5
S1 Pend. Teknik Informatika 2013 OFF F

b. Ketika melakukan running program, tambahlah argument berupa String Nama kota
kelahiran anda!
Source code : lahir.java
public class lahir {
public static void main (String args []) {
try {
int a=5/0; //berpotensi untuk menimbulkan kesalahan yaitu pembagian
dengan bilangan 0
int num = Integer.parseInt ("MALANG"); //penambahan kota kelahiran
System.out.println("perintah selanjutnya..");
}
catch(ArrayIndexOutOfBoundsException e){
}
catch (NullPointerException e) {
}
catch (Exception e){
}
}
}

Output Program adalah:


6
S1 Pend. Teknik Informatika 2013 OFF F

c. Ketika melakukan running program, tambahlah argument berupa Angka Nol!


Source code : angkaNol.java
public class angkaNol {
public static void main(String[] args) {
try
{
int num = Integer.parseInt("0"); //penambahan angka nol
int a = 5/0; //berpotensi untuk menimbulkan kesalahan yaitu
pembagian dengan bilangan 0
System.out.println("perintah selanjutnya");
}
catch(NullPointerException e){
//System.out.println("EROR1 " + e);
}
catch(ArrayIndexOutOfBoundsException e){
//System.out.println("EROR2 " + e);
}
catch(Exception e){
//System.out.println("EROR3 " + e);
}
}
}

Output Program adalah:


7
S1 Pend. Teknik Informatika 2013 OFF F

d. Bagaimana dengan running program tanpa argument.


Source code : noArgu.java
public class noArgu{
public static void main(String[] args) {
try
{
int num = Integer.parseInt();
int a = 5/0; //berpotensi untuk menimbulkan kesalahan yaitu
pembagian dengan bilangan 0
System.out.println("perintah selanjutnya");
}
catch(NullPointerException e){
System.out.println("EROR1 " + e);
}
catch(ArrayIndexOutOfBoundsException e){
System.out.println("EROR2 " + e);
}
catch(Exception e){
System.out.println("EROR3 " + e);
}
}
}

Output Program adalah:

e. Apakah pada multiple catch catch(Exception

e) selalu

diletakkan di akhir? Jelaskan!


Ya, karena catch(Exception e) merupakan tipe catch yang meng-include kan semua tipe
exception di dalam java package, sehingga ketika blok catch yang sebelumnya tidak
berhasil menangkap, blok ini yang akan menangkapnya di akhir. Dan secara hirarki pada
8

S1 Pend. Teknik Informatika 2013 OFF F

aturan subclass dari kelas exception jenis Exception e ini memang berada di bawah. Jadi
untuk aturan pada syntax harus menyesuaikan dengan hirarki pada subkelas tersebut.
Deskripsi Program:
Dalam latihan 3 ini terdapat contoh program exception handling yang di dalamnya terdapat 2
statement throw yang melempar ke 2 catch yang berbeda, namun yang bisa menangkap hanya
exception yang hanya sesuai dengan tipe exceptionnya. ArrayIndexOutOfBoundsException
dilemparkan ketika mengakses array dengan index yang tidak valid .
NullPointerException dilemparkan ketika kita mengakses suatu reference variable yang
null.

4. Latihan 4 : Try-Catch-Finally
Source code : TCF.java
public class TCF
{
public TCF(){
}
public static void main(String args[])
{
int nol = 0 ;
int angka = 10;
try {
int hasil = angka/nol;
System.out.println("Hasil = "+hasil);
}
catch (ArithmeticException e)
{
System.out.println("Terjadi pembagian dgn nol.Exception
ditangkap");
}
finally{
System.out.println("Kalimat di blok finally");
}
System.out.println("Kalimat diluar blok try-catch-finally");
}
}

a. Output program adalah

b. Analisis Exception Handling dengan menggunakan Try-Catch-Finally!


Exception handling dengan menggunakan try-catch-finally adalah salah satu penanganan
eksepsi yang jika blok try mengalami eksepsi maka blok catch akan dijalankan dan blok
finally juga akan dijalankan. Sedangkan jika blok try tidak mengalami eksepsi maka blok
catch tidak akan dijalankan dan blok finally akan tetap dijalankan. Perbedaannya, setelah
catch dieksekusipun maka akan dilanjutkan menjalankan blok finally. Exception handling
9
S1 Pend. Teknik Informatika 2013 OFF F

dengan menggunakan Try-Catch-Finally berjalan dengan Try-Catch biasa, namun blok


program pada Try menimbulkan kesalahan, maka akan ditangkap pada blok Catch sebagai
ganti agar program yang tidak dieksekusi. Sehingga dapat disimpulkan bahwa blok finally
akan selalu dijalankan dalam kondisi apapun.
c. Bagaimana perbedaan dengan jenis Exception Handling yang lainnya?
Perbedaan dengan jenis exception handling
- try-catch
Menangani kesalahan tetapi ada bagian yang tidak dieksekusi atau dijalankan.
- multiple-catch
Mengakibatkan lebih dari satu jenis eksepsi.
- try-catch-finally
Mengakibatkan semua pernyataan yang ada didalam program dieksekusi atau dijalankan.
Perbedaan dengan blok yang lain, terdapat blok yang selalu akan dieksekusi yaitu blok
Finally.
Deskripsi Program:
Pada latihan 4 ini terdapat Try-Catch-Finally yang berbeda dengan blok Try-Catch biasa,
terdapat blok Finally yang akan selalu dieksekusi ketika blok Try menimbulkan kesalahan.

5. Latihan 5 : Melempar exception


5.1 Program 1
Source code : ThrowDemo.java
class ThrowDemo {
public static void main(String args[])
{
String input = "invalid input";
try {
if (input.equals("invalid input")) {
throw new RuntimeException("throw demo");
} else {
System.out.println(input);
}

System.out.println("After throwing");
} catch (RuntimeException e) {
System.out.println("Exception caught here.");
System.out.println(e);
}

Output program:

Deskripsi Program:
Dalam latihan 5 ini terdapat contoh pelemparan Exception dengan keyword throw new di
dalam blok Try kemudian akan langsung ditangkap dalam blok catch.
10
S1 Pend. Teknik Informatika 2013 OFF F

Program 2
Source code : DataMhs.java
class DataMhs
private
private
private

{
String nim;
String nama;
double nilai;

public void setNim(String vnim)


{
try {
nim = vnim;
if (nim == null) {
throw new NullPointerException();
}
} catch (NullPointerException npe) {
System.out.println("KESALAHAN: " + "NIM barang tidak
boleh null");
}
}
public String getNim() {
return nim;
}
public void setNama(String vNama) {
try {
nama = vNama;
if (nama == null) {
throw new NullPointerException();
}
} catch (NullPointerException npe) {
System.out.println("KESALAHAN: " + "Nama mahasiswa
tidak boleh null");
}
}
public String getNama() {
return nama;
}
public void setNilai(int vnilai) {
nilai = vnilai;
}
public double getNilai() {
return nilai;
}
}
class DemoThrow {
public static void main(String[] args) {
DataMhs obj = new DataMhs();
obj.setNim("130533608107");
obj.setNama("Yusi Nur Aisyah");
obj.setNilai(100);

System.out.println("NIM\t\t: " + obj.getNim());


System.out.println("Nama\t: " + obj.getNama());
System.out.println("Nilai\t: " + obj.getNilai());

11
S1 Pend. Teknik Informatika 2013 OFF F

Output program:

Deskripsi Program:
Pada latihan 5.1 ini terdapat contoh throw exception yang lain di dalam blok try, namun
tidak ditangkap karena di dalam blok try tidak terjadi kesalahan sehingga tidak dilempar
menuju blok catch.
5.2 Keyword Throws
Source code : DemoThrows2.java
public class DemoThrows2 {
public static void uji(int angka)
throws NullPointerException, ArithmeticException {
if (angka < 0) {
throw new NullPointerException("KESALAHAN: null pointer
exception");
} else {
throw new ArithmeticException("KESALAHAN: arithmetic
exception");
}
}
public static void main(String[] args) {
try {
//uji(-12); // menimbulkan eksepsi NullPointerException
uji(0); // menimbulkan eksepsi ArithmeticException
} catch (Exception e) {
System.out.println("Eksepsi ditangkap di sini...");
System.out.println(e.getMessage());
}
System.out.println("Statemen setelah blok try-catch");
}
}

Output program:

Deskripsi Program:
Dalam latihan 5.2 ini terdapat contoh program ini terdapat 2 statement throw yang melempar
ke 2 catch yang berbeda, namun yang bisa menangkap hanya exception yang hanya sesuai
dengan tipe exception-nya.

12
S1 Pend. Teknik Informatika 2013 OFF F

6. Latihan 6 : Membuat Eksepsi Sendiri


Source code : NegativeNumberException.java
class NegativeNumberException extends Exception {
private int bilangan;
// default constructor
NegativeNumberException() {
}
// constructor dengan parameter bertipe String
NegativeNumberException(String pesan) {
super(pesan);
}
// constructor dengan parameter bertipe String dan int
NegativeNumberException(String pesan, int nilai) {
super(pesan);
bilangan = nilai;
}
public int getBilangan() {
return bilangan;
}
}

Source code : DemoMembuatEksepsi3.java


class DemoMembuatEksepsi3 {
public static int hitungFaktorial(int n)
throws NegativeNumberException {
if (n < 0) {
throw new NegativeNumberException("Bilangan tidak boleh
negatif", n);
}
int hasil = 1;
for (int i=n; i>=1; i--) {
hasil *= i;
}
return hasil;
}

public static void main(String[] args) {


System.out.println("Pada saat menghitung 5!");
try {
System.out.println("Hasil = " + hitungFaktorial(5));
} catch (NegativeNumberException nne) {
System.out.println("Bilangan : " + nne.getBilangan());
//nne.printStackTrace();
}
System.out.println("\nPada saat menghitung -5!");
try {
System.out.println("Hasil = " +hitungFaktorial(-5));
} catch (NegativeNumberException nne) {
System.out.println("Bilangan : " + nne.getBilangan());
nne.printStackTrace();
}
}

13
S1 Pend. Teknik Informatika 2013 OFF F

a. Output program adalah

Deskripsi Program:
Dalam latihan 6 ini terdapat contoh pembuatan exception sendiri, dengan membuat class
yang berisi method-method yang diturunkan dakelas exception dalam java. Kemudian akan
digunakan di kelas lain yang menggunakannya.
D. MELAKUKAN INPUT
1. Membaca input berupa karakter
Source code : DemoInputKarakter.java
import java.io.*;
class DemoInputKarakter {
public static void main(String[] args) throws IOException {
System.out.println("Masukan sembarang karakter: ");
char ch;
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
ch = (char) br.read();
System.out.println("Karakter yang dimasukan adalah \'" +ch+ "\'");
}
}

Output program adalah

Deskripsi program:
Program yang melakukan pembacaan data dari input user. Pada program ini ia membaca
inputan data berupa karakter dan menggunakan metode Buffered Reader untuk menginputkan
datanya.
2. Membaca input data string
Source code : DemoInputString.java
import java.io.*;
class DemoInputString {
public static void main(String[] args) throws IOException {
System.out.print("Masukan nama anda : ");
String nama;
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
nama = br.readLine();

14
S1 Pend. Teknik Informatika 2013 OFF F

System.out.println("Halo " + nama +", sudahkan anda mengerti java?");


}

Output program adalah

Deskripsi program:
Program yang melakukan pembacaan data dari input user. Pada program ini ia membaca
inputan data berupa string atau kata. Disini program menggunakan metode Buffered Reader
untuk menginputkan datanya.
3. Membaca input data numeric
Source code : DemoInputNumerik1.java
import java.io.*;
class DemoInputNumerik1 {
public static void main(String[] args) throws IOException {
System.out.print("Masukan sebuah bilangan bulat : ");
String temp;
int bilangan=0;
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
// input data dianggap sebagai string
temp = br.readLine();
try {
// konversi dari string ke interger
bilangan = Integer.parseInt(temp);
} catch (NumberFormatException nfe) {
System.out.println("Data yang dimasukan bukan bilangan bulat");
System.exit(1);
}
System.out.println("Bilangan yang dimasukan " +"adalah "+bilangan);
}
}

Output program adalah

Source code : DemoInputNumerik2.java


import java.io.*;
class DemoInputNumerik2 {
public static void main(String[] args) throws IOException {
System.out.print("Masukan sebuah bilangan riil : ");
String temp;
double bilangan=0;
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);

15
S1 Pend. Teknik Informatika 2013 OFF F

// input data dianggap sebagai string


temp = br.readLine();
try {
// konversi dari string ke floating-point
bilangan = Double.parseDouble(temp);
} catch (NumberFormatException nfe) {
System.out.println("Data yang dimasukan bukan bilangan");
System.exit(1);
}
System.out.println("Bilangan yang dimasukan " +"adalah "+bilangan);
}
}

Output program adalah

Deskripsi program:
Program yang melakukan pembacaan data dari input user. Pada program ini ia membaca
inputan data berupa numerik dan menggunakan metode Buffered Reader untuk menginputkan
datanya. Perbedaan numerik1 dan numerik2 adalah pada jenis tipe data yang digunakan. Pada
numerik1 ia menggunaka tipe data integer sehingga hasilnya 12. Sedangkan pada numerik2 ia
menggunakan tipe data floating point sehinggan hasilnya adalah 12.0

E. TUGAS PRAKTIKUM
1. Buatlah program yang hanya bisa menerima input berupa angka saja. Bila diinputkan selain
angka (numerik) maka akan ditangkap oleh blok catch
Source code : tp.java
import java.io.*;
class tp {
public static void main (String[] args) throws IOException {
System.out.println(" ");
System.out.println("+----------------------------------+");
System.out.println("+
Memasukkan Data Berupa Angka
+");
System.out.println("+
Yusi Nur Aisyah 130533608107
+");
System.out.println("+----------------------------------+\n");
System.out.print("Masukkan sebuah angka : ");
String temp;
int angka = 0;
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
//input data dianggap sebagai string
temp = br.readLine();
try {
//konversi dari string ke integer
angka = Integer.parseInt(temp);
}catch (NumberFormatException nfe){
System.out.println("Data yang Anda masukan bukan berupa angka");
System.exit(1);
}
System.out.println("Bilangan yang dimasukkan " +"adalah "
+angka);

16
S1 Pend. Teknik Informatika 2013 OFF F

}
}

Output program adalah

2. Berdasarkan program diatas tambahkan blok finally untuk menyatakan bahwa telah dilakukan
pengecekan terhadap data yang diinputkan
import java.io.*;
class tp {
public static void main (String[] args) throws IOException {
System.out.println(" ");
System.out.println("+----------------------------------+");
System.out.println("+
Memasukkan Data Berupa Angka
+");
System.out.println("+
Yusi Nur Aisyah 130533608107
+");
System.out.println("+----------------------------------+\n");
System.out.print("Masukkan sebuah angka : ");
String temp;
int angka = 0;
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);

//input data dianggap sebagai string


temp = br.readLine();
try {
//konversi dari string ke integer
angka = Integer.parseInt(temp);
}
catch (NumberFormatException nfe){
System.out.println("Data yang Anda masukan bukan berupa angka");
//System.exit(1);
}
finally{
System.out.println("Blok Finally ");
}
System.out.println("Bilangan yang dimasukkan "
+"adalah " +angka);
}

17
S1 Pend. Teknik Informatika 2013 OFF F

Output program

Deskripsi program:
Program ini program yang digunakan untuk memasukkan data berupa angka. Ketika data
yang dimasukkan bukan berupa angka maka muncul tampilan Data yang Anda masukkan
bukan berupa angka. Disini menggunakan eksepsi jenis IOException yang merupakan
penanganan terhadap kesalahan inputan. Untuk mengatur input berupa angka yaitu String
temp; dan int angka = 0; . Ketika input data dianggap sebagai suatu string maka akan
langsung dilempar ke IOException yang diterima oleh NumberFormatException dan
menampilkan pesan kesalah tadi.
Penambahan blok finally hanya melakukan pengecekan terhadap data yang diinputkan. Ketika
data sudah benar maka akan ditampilkan pesan dari data yang sudah diinputkan tadi. Apabila
inputan salah maka akan ditampilkan juga pesan kesalahannya dan hasil inputan dinyatakan
sebagai nol (0). Blok finally tetap di eksekusi baik data yang diinputkan sudah benar maupun
salah.

F. TUGAS RUMAH
Buat program exception handling sendiri dengan spesifikasi :
1. Menggunakan exception handling multiple catch
2. Minimal 2 multiple catch
3. Dimana catchnya bukan dari bawaan Java, tetapi kalian buat ekspresi catch sendiri selain
contoh di Latihan 6!
Source code : Eksepsi.java
//kelas Eksepsi merupakan kelas eksepsi yang dibuat sendiri
class Eksepsi extends Exception{

18
S1 Pend. Teknik Informatika 2013 OFF F

Eksepsi(){ //constructor default


}
Eksepsi(String s){ //constructor dengan parameter s bertipe String
super(s);
}
}

Source code : TestEksepsi.java


//kelas untuk mengeksekusi kelas EksepsiKu
class TestEksepsi {
public static void methodKu() throws Eksepsi { //method methodKu
//membuat eksepsi sendiri
throw new Eksepsi("Isi Eksepsi");
}
public static void main(String[] args) { //method main
//Blok yang ditangkap sekiranya terjadi eksepsi
try {
methodKu();
}
//blok yang akan dijalankan kalau terjadi eksepsi
catch (Eksepsi e) { //catch dengan objek Eksepsi
System.out.println("Terjadi eksepsi! \ndari " + e);
}
//blok yang akan dijalankan kalau terjadi eksepsi
catch (Exception e){ //Catch dengan objek Exception
System.out.println("I hate Eksepsi " + e);
}
}
}

Output program adalah

Deskripsi program :
Program pada tugas rumah ini adalah program exception handling jenis multiple catch. Multiple
catch pada program ditunjukkan dengan adanya :
try {

methodKu();
}
catch (Eksepsi e) {
System.out.println("Terjadi eksepsi! \ndari " + e);
}
catch (Exception e){ //Catch dengan objek Exception
System.out.println("I hate Eksepsi " + e);
}

Disini multiple catch yang pertama menggunakan metode eksepsi buatan sendiri dengan nama
Eksepsi. Kita menggunakan juga keyword exception handling yaitu throw yang digunakan untuk
melempar eksepsi yang terjadi. Eksepsi di lempar kepada Eksepsi. Karena yang ditangkap adalah
blok methodKu maka ketika terjadi eksepsi langsung dilemparkan kepada Eksepsi dan ditangkap
oleh catch yang pertama yang berbunyi terjadi eksepsi dari Isi Eksepsi.

7. KESIMPULAN

Exception adalah suatu keadaan yang menyebabkan program hang atau


keluar dari alur normal pada saat program dijalankan. Exception handling
19

S1 Pend. Teknik Informatika 2013 OFF F

merupakan mekanisme untuk menangkap bug atau kesalahan pada saat


program sedang berjalan.
Keyword pada Exception Handling yaitu try, catch, finally, throw, dan
throws.
Exception merupakan event yang berjalan saat terjadi kesalahan
Saat terjadi kesalahan, maka terdapat metode yang dapat digunakan untuk mengatasi
program agar program tidak berhenti, yaitu Exception Handling
Metode Exception Handling bermacam-macam, contohnya :
- Try-catch
- Multiple catch
- Try-catch-finally
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

Selain menangkap exception, java juga memungkinkan untuk melemparkan exception agar
dapat ditangkap oleh blok catch, yakni menggunakan keyword throw

Blok try akan mencoba memanggil statement-statement dari method yang dideklarasikan dengan
exception dan blok catch digunakan untuk memproses bila terjadi exception, bila pada saat
mengeksekusi blok try ada statement yang menyebabkan exception, maka Interpenter akan langsung
keluar dari blok try, kemudian mencari blok catch yang bersesuaian dengan exception yang terjadi.

DAFTAR RUJUKAN
-

Modul Praktikum Pemrograman Berorientasi Obyek. 2013. Modul 6 Exception Handling

Hermawan, Benny. 2004. Menguasai Java 2 & Object Oriented Programming.

Modul 6 Praktikum Pemrograman Berbasis Objek, Universitas Negeri Malang

JENI, 2012, JENI-Intro1-Bab12-Dasar Exception Handling

20
S1 Pend. Teknik Informatika 2013 OFF F

Anda mungkin juga menyukai