Anda di halaman 1dari 35

LAPORAN MODUL VII

PRAKTIKUM PEMROGRAMAN BERORIENTASI OBJEK


“EXCEPTION HANDLING”

Disusun untuk Memenuhi Matakuliah Praktikum Pemrograman Berorientasi Objek


Dibimbing oleh Heru Wahyu Herwanto, S.T., M.Kom.

Oleh:
Azizah Tri Novanti 170533628613

S1 PTI ‘17 OFF A

UNIVERSITAS NEGERI MALANG


FAKULTAS TEKNIK
JURUSAN TEKNIK ELEKTRO
PRODI S1 PENDIDIKAN TEKNIK INFORMATIKA
November 2018
I. Tujuan Praktikum
1. Menerapkan konsep exception handling.
2. Menangkap exception.
3. Membuat catch secara bertingkat.
4. Melemparkan exception.
5. Menggunakan klausa throws.
6. Membuat class exception sendiri.
7. Menggunakan class JList dan JComboBox.
II. Dasar Teori
1. Konsep exception handling.
Kategori error dalam pemrograman diantaranya:

a. Compilation error, yaitu error yang terjadi saat program dikompilasi.


b. Runtime error, yaitu error yang terjadi saat program
dieksekusi/dijalankan.
c. Logic error, yaitu error yang terjadi saat program tidak berjalan sesuai
dengan harapan.

Exception (eksepsi atau pengecualian) adalah kondisi yang menyebabkan


program menjadi hang (tergantung) atau quit (kaluar) dari alur normal yang telah
ditentukan pada saat program dijalankan. Exception dipicu oleh runtime error,
yaitu error atau kesalahan yang terjadi saat program dieksekusi oleh interpreter.
Sedangkan exception handling (penanganan pengecualian) merupakan
mekanisme untuk menangkap exception tersebut.
2. Hierarki class Exception.
3. Keyword pada exception handling
Keyword pada exception handling diantaranya:
a. Try. Blok try digunakan untuk menempatkan kode program yang
mungkin menyebabkan terjadinya exception.
b. Catch. Blok catch digunakan untuk menangkap kesalahan yang terjadi
pada blok try.
c. Finally. Blok finally akan selalu dijalankan, tidak peduli apakah terjadi
exception atau tidak.
d. Throw. Klausa throw digunakan untuk melemparkan exception yang
terjadi.
e. Throws. Klausa throws digunakan untuk mendeklarasikan method yang
mungkin akan mengalami exception.

4. Pengenalan class JList dan JComboBox.


Class JList merupakan class dari package javax.swing yang digunakan
untuk membuat komponen berupa list atau daftar pilihan. Dengan
menggunakan list, seluruh alternatif pilihan yang tersedia dapat ditampilkan
secara bersamaan.
Class JComboBox merupakan class dari package javax.swing yang
digunakan untuk membuat komponen berupa combo box atau kotak kombo
yang berisi pilihan seperti pada list. Perbedaannya adalah dengan
menggunakan combo box, seluruh alternatif pilihan yang tersedia ditampilkan
seperti menu drop down. Oleh karena itu, combo box juga dikenal sebagai
drop down list.
III. Tugas Latihan
1. Nama Program : Program tanpa exception handling
Source Code :
public class WithoutExceptionHandling
{
public static void main(String[] args)
{
System.out.println("\n****** PROGRAM TANPA
EXCEPTION HANDLING ******\n");
int hasil=9/0;
System.out.println("Hasil pembagian = "+hasil);
System.out.println("Pernyataan setelah bebas
dari exception.");
}
}

Hasil Program :

Penjelasan :
Program diatas menjalankan perhitungan 9 dibagi 0 tanpa exception handling
yang membuat outputnya adalah kesalahan pada
ArithmeticExceptionHandling. Hal ini terjadi karena program tersebut tidak
menerapkan exception handling yang dapat membuat program bisa berjalan
walaupun terdapat error enkipsi.perhitungan artimatika tidak dapat membagi
bilangan apapun dengan nol, oleh karena itu terdapat kesalahan pada jenis
exception aritmatika. Sebenarnya, program akan tetap tampil, namun java
akan menampilkan informasi bahwa terjadi kesalahan pada
java.lang.arithmeticException akbiat apa dan pada baris mana, sehingga user
mengetahui letak kesalahannya.
2. Nama Program : Menangkap exception dengan blok try-catch
Source Code :
public class WithArithmeticException
{
public static void main(String[] args)
{
System.out.println("\n****** PROGRAM DENGAN
EXCEPTION HANDLING *******\n");
try
{
int hasil = 9/0;
System.out.println("Hasil pembagia =
"+hasil);
System.out.println("pernyataan dalam blok
try setelah bebas dari exception");
}
catch(ArithmeticException exc)
{
System.err.println("ArithmeticException
menangkap hasil pembagian oleh");
System.err.println("\nException yang
ditangkap adalah : "+exc);
}
System.out.println("\nPernyataan di luar try-
catch");
}
}

Hasil Program :
a.
c.

Penjelasan :

Program diatas menjalankan exception handling dengan menggunakan try-


catch dimana letak kesalahan di berikan pada try dan catch akan mencoba
menyelesaikannya sesuai dengan jenis exception handlingnya tersebut.
Pernyataan yang akan dioutput adalah pernyataan catch karena terapat
exception pada try dan catch akan menangani exception dari try. Pada try
terjadi kesalahan pada ArithmeticException karena int hasil = 9/0
akan terjadi error dimana exception jenis ArithmeticException tidak boleh
membagi bilangan dengan angka nol. Apabila ingin menjalankan pernyataan
didalam try, maka pembagian harus diganti dengan yang bukan nol. Misalkan
int hasil = 9/0 diganti dengan int hasil = 9/9 maka try akan
dijalankan sehingga hasil dari perhitungan aritmatika tersebut dan pernyataan
("pernyataan dalam blok try setelah bebas dari exception") akan

ditampilkan. Pernyataan ("\nPernyataan di luar try-catch") akan


selalu dijalankan karena pernyataan tersebut berada di luar excetion atau try
catch. Sehingga walaupun terdapat exception atau tidak pernyataan tersebut
akan terus tampil untuk memnandakan bahwa hanya pada exception saja yang
tidak bisa ditampilkan ketika terjadi error, diluar fungsi tersebut akan tetap
dijalankan.
3. Nama Program : Membuat blok try-catch-finally
Source Code :

public class TryCatchFinally


{
public static void main(String[] args)
{
System.out.println("\n***** MENGGUNAKAN BLOK
TRY CATCH FINALLY\n");
try
{
int hasil = 9/0;
System.out.println("Hasil Pembagian =
"+hasil);
System.out.println("Pernyataan dalam try
setelah bebas dari exception");
}
catch(ArithmeticException exc)
{
System.err.println("ArithmeticException
menagkap exception hasil pembagian oleh nol ");
System.err.println("\nException yang
ditangkap adalah : "+exc);
}
finally
{
System.out.println("\nPernyataan dalam
blok finally");
}
System.out.println("\nPernyataan di luar try-
catch-finally");
}
}

Hasil Program :
Penjelasan :
Program diatas menjalankan exception handling dengan menerapkan try-
catch-finally. Ketika pada fungsi try teridentifikasi exception. Maka pada
fungsi catch akan dijalankan kemudian fungsi finally yang akan selalu
ditamilkan. Hal ini dikarenakan apabila terjadi exception try atau catch,
pernyataan yang pasti ditampilkan adalah pernyataan finally.
System.err.println digunakan untuk menampilkan jenis error pada
exception yang dijalankan, sehingga user mengetahui kesalahan pada
program.

4. Nama Program : Membuat catch secara bertingkat


Source Code :
public class MultipleCatch
{
public static void main(String[] args)
{
System.out.println("\n****** MENGGUNAKAN
MULTIPLE CATCH ******\n");
try
{
int[] array = new int[9];
array[9] = 13;
System.out.println("Elemen array indeks
ke 9 adalah "+array[9]);
System.out.println("Pernyataan dalam blok
try setelah bebas dari exception");
}
catch(ArrayIndexOutOfBoundsException exc)
{
System.err.println("Anda mengakses array
di luar indeks yang dideklarasikan");
}
catch(NegativeArraySizeException exc)
{
System.err.println("Anda mendeklarasikan
array dengan ukuran negatif");
}
catch(Exception exc)
{
System.err.println("Anda melakukan
pembagian bilangan oleh nol");
}
}
}
Hasil Program :
a.

c.

d.

e.

f.
Penjelasan :
Program diatas menerapkan multiple catch dimana terdapat beberapa fungsi
catch yang sesuai dengan kesalahan pada program. Misalkan apabila pada try
terjadi kesalahan pada Array diluar indeks, maka catch yang dijalankan adalah
catch(ArrayIndexOutOfBoundsException exc). Apabila pernyataan
dalam fungsi try dijalankan, maka deklarasi int[] array = new int[9]
diubah menjadi int[] array = new int[10] sehingga ketika pemanggilan
array[9] = 13 dapat menampilkan hasil dari pemanggilan tersebut serta
pernyataan ("Pernyataan dalam blok try setelah bebas dari
exception". Apabila terjadi kesalahan mendeklarasi ukuran array menjadi
negative contohnya int[] array = new int[-9] maka catch yang akan
dijalankan adalah catch dengan jenis NegativeArraySizeException exc
karena jenis exception tersebut akan mendeteksi kesalahan apabila terdapat
negative pada ukuran array. catch(Exception exc) digunakan ketika
melakukan kesalahan lain seperti kesalahan ketika membagi bilangan dengan
nol, sehingga catch akan mendeteksi bahwa terdapat exception
AritmaticException dan menamilkan pernyataan "Anda melakukan

pembagian bilangan oleh nol". Misallkan terdapat deklarasi int hasil


= 9/0 maka catch yang dijalankan adalah catch(Exception exc) dan akan
menampilkan pernyataan "Anda melakukan pembagian bilangan oleh
nol". Apabila catch(Exception exc) dipindah ke posis paling atas dari
catch lainnya, maka akan terjadi error seperti pada screenshoot nomer f. hal
ini terjadi Karen a catch(Exception exc) merupakan superclass yang bila
dijalankan terlebih dahulu, maka subclassnya tidak akan pernah dijalankan
5. Nama Program : Melemparkan exception dengan klausa throw
Source Code :
public class KlausaThrow
{
public static void main(String[] args)
{
String input = "Throw RuntimeException";

System.out.println("\n******** MENGGUNAKAN
KLAUSA THROW *********\n");
try
{
if(input.equals("Throw
RuntimeException"))
{
throw new
RuntimeException("Melempar Exception");
}
else if(input==null)
{
throw new NullPointerException();
}
else
{
System.out.println("Input adalah :
"+input);
}
System.out.println("\nPernyataan dalam
blok try setelah bebas dari pelemparan exception");
}
catch(Exception exc)
{
System.err.println("Exception ditangkap
disini");
System.err.println("\nException yang
ditangkap adalah : "+exc);
}
}
}
Hasil Program :
a.
c.

d.

Penjelasan :
Program diatas menjelaskan tentang kondisi throw dimana String input
akan melempar exception pada try-catch. Pelemparan terjadi karena terdapat
pemanggilan String input pada fungsi try dan masuk kedalam fungsi catch
untuk menangkap exception. Setiap pernyataan if-else terdapat keyword
throw yang berarti melemparkan exception pada block catch. Apabila
pernyataan String input menjadi NULL, maka pernyataan else
if(input==null) dijalankan, sehingga try akan melempar
NullPointerException() pada catch. Apabila String input diisi dengan
kata lain semisal “KOSONG”, maka pernyataan ELSE akan dijalankan.
Hasilnya akan menampilkan inputan dan pernyataan ("\nPernyataan dalam
blok try setelah bebas dari pelemparan exception") yang
menandakan bahwa tidak terjadi exception sehingga pernyataan terbebas dari
pelemparan exception pada catch dan hasil dapat ditampilkan dengan baik.
6. Nama Program : Menggunakan klausa throws
Source Code :
public class KlausaThrows
{
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)
{
System.out.println("\n****** MENGGUNAKAN KLAUSA
THROWS ******\n");
try
{
uji(-12);
//uji(0);
}
catch(Exception exc)
{
System.err.println("Exception ditangkap
di sini");
System.err.println("\n\tpemberitahuan!!!
\n"+exc.getMessage());
}
System.out.println("\nPernyataan di luar blok
try-catch");
}
}

Hasil Program :
.
Penjelasan :
Program diatas menerapkan konsep throws dimana terdapat pemaggilan
beberapa method yang akan melempar diluar method dimana block try-catch
dijalankan. Karena exception yang mungkin dilempar oleh method yang
bersangkutan dapat berjumlah lebih dari satu, maka dapat dituliskan lebih dari
satu jenis eksepsi dengan pemisah tanda koma seperti throws

NullPointerException, ArithmeticException. Setelah itu terdapat


pernyataan if-else yang tiap pernyataannya terdapat keyword throw untuk
melempatkan exception pada catch jika pernyataan tersebut dijalankan.
Apabila method uji(-12) dipanggil, maka method tersebut akan
melemparkan exceptionnya pada catch sehingga program akan menampilkan
pernyataan yang ada pada block cactch yaitu ("Exception ditangkap di
sini". Begitu pula jika method uji(0) dijalankan, maka pada pernyataan
ELSE aka menjalankan pelemparan exception ArithmeticException pada
catch dan akan menampilkan pernyataan yang sama seperti method
sebelumnya namun dengan jenis exception yang berbeda
7. Nama Program : Membuat class exception sendiri
Source Code :
class CreateExceptionHandling extends Exception
{
private int bilangan;

CreateExceptionHandling()
{

CreateExceptionHandling(String pesan)
{
super(pesan);
}

CreateExceptionHandling(String pesan, int nilai)


{
super(pesan);
bilangan = nilai;
}

public int getBilangan()


{
return bilangan;
}
}

public class TryExceptionHandling


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

public static void main(String[] args)


{
System.out.println("\n****** MEBUAT CLASS
EXCEPTION SENDIRI ******\n");
try
{
System.out.println("Pada saat menghitug
5!");
System.out.println("Hsil =
"+hitungFaktorial(5));
System.out.println("\nPada saat meghitung
-5!");
System.out.println("Hasil =
"+hitungFaktorial(-5));
}
catch(CreateExceptionHandling exc)
{
System.err.println("Bilangan =
"+exc.getBilangan());
exc.printStackTrace();
}
}
}
Hasil Program :

Penjelasan :
Program diatas menerapkan exception handling sendiri dimana penyelesaian
error pada program akan ditangani sendiri oleh progamer dengan beberapa
codingan tertentu. Untuk melakukan hal tersebut, cukup membuat class
baruyang merupakan turunan dari Exception. Didalam class baru tersebut
cukup mendeklarasi konstruktor yang mungkin akan digunakan. Program
diatas akan menghitung bilangan factorial dengan menerapkan exception
sendiri, dimana jika bilangan factorial negative, maka akan terdapat informasi
bahwa bilangan dalam factorial tidak boleh negative. Terdapat fungsi
exc.printStackTrace() yang digunakan untuk menampilkan letak
kesalahan pada baris ke berapa, sehingga user mengetahui letak kesalahannya.
8. Nama Program : Menggunakan class JList
Source Code :
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import javax.swing.event.*;

public class TryList extends JFrame implements


ListSelectionListener
{
private JList daftar;
private JTextArea tArea;

public TryList()
{
super("MENGGUNAKAN LIST");
setSize(350,125);

String matakuliah[] = {"Fisika


Teknik","Komputasi Numerik", "Matematika Diskrit"};
daftar = new JList(matakuliah);
daftar.setSelectedIndex(0);//menset item yg
dipilih

daftar.addListSelectionListener(this);//mendafar
event listener yang akan dipanggil jika user mengubah
pilihannya
tArea = new JTextArea(4,15);
tArea.setEditable(false);

JPanel p1=new JPanel();


p1.add(daftar);
add("West",p1);
JPanel p2 = new JPanel();
p2.add(tArea);
add("East",p2);

setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

public void valueChanged(ListSelectionEvent e)


{
tArea.setText("\nItem yang terpilih :
\n"+daftar.getSelectedValue());//mendapatkan objek yang
dipilih
}

public static void main(String[] args)


{
TryList frame = new TryList();
}
}
Hasil Program :

Penjelasan :
Program diatas menampilkan list mata kuliah berbasis GUI dimana user dapat
memilih daftar list yang tersedia. Sebelum membuat class, terleih dahulu
mengimport package dari fungsi yang ada, seperti contohnya
ListSelectionListener terdapat pada package import

javax.swing.event.* . JList digunakan untuk menampilkan sekumpulan


daftar yang dapat dipilih oleh user. Agar tampilan berbasis GUI maka class
tersebut di turunkan dari JFrame dan mengimplementasikan
ListSelectionListener yang digunakan untuk mendeteksi list yang dipilih

oleh user. daftar.setSelectedIndex(0) digunakan untuk mengeset pilihan


yang dipilih oleh user pada indeks ke-0. Apabila user ingin mengubah
pilihannya maka perlu daftar.addListSelectionListener(this) agar
indeks berpindah pada pilihan yang dipilih user.
tArea.setEditable(false) digunakan untuk menonaktifkan pengubahan
pada text area sehingga user tidak bisa mengubah isi dalam text area tersebut.
daftar.getSelectedValue() akan mendapatkan objek yang dipilih user
sehinga objek tersebut dapat ditampilkan di text area sesuai dengan pilihan
user.
9. Nama Program : Menggunakan class JComboBox
Source Code :
import javax.swing.*;
import javax.swing.event.*;
import java.awt.event.*;
import java.awt.*;

public class TryComboBox extends JFrame implements


ActionListener
{
private JComboBox daftar;
private JTextArea tArea;

public TryComboBox()
{
super("MENGGUNAKAN COMBO BOX");
setSize(350,125);

String matakuliah[] = {"Fisika


Teknik","Komputasi Numerik","Matematika Diskrit"};
daftar = new JComboBox(matakuliah);
daftar.addActionListener(this);//untuk
mendaftarkan event listner yang dapat digunakan ketika user
megganti pilihannya
tArea = new JTextArea(4,15);
tArea.setEditable(false);

JPanel p1 = new JPanel();


p1.add(daftar);
add("West",p1);
JPanel p2 = new JPanel();
p2.add(tArea);
add("East",p2);

setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

public void actionPerformed(ActionEvent e)


{
JComboBox cbb =(JComboBox)e.getSource();//untuk
mengetahui objek sumber
String keterangan =
(String)cbb.getSelectedItem();//untuk mendapatkan objek
yang ada pada indeks tertentu
tArea.setText("\nItem yang terpilih :
\n"+keterangan);
}
public static void main(String[] args)
{
TryComboBox frame = new TryComboBox();
}
}
Hasil Program :

Penjelasan :
Program diatas menerapkan combo box yang digunakan untuk menampilkan
sekumulan daftar pilihan yang dapat dipilih oleh user dimana dalam kondisi
normal hanya pilihan yang sedang aktif saja yang ditampilkan. Jika combobox
diklik barulah daftar menu pilihan yang lebih lengkap ditampilkan agar user
dapat memilihnya. daftar.addActionListener(this) digunakan ketika
user mengganti pilihannya, sehingga event listener didaftarkan. JComboBox
cbb =(JComboBox)e.getSource() digunakan untuk mengetahui objek
sumber yang aktif atau yag dipilih oleh user. cbb.getSelectedItem()
digunakan untuk mendapatkan objek pada indeks tertentu.

10. Nama Program : Menghubungkan frame


Source Code :
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

class Button1 extends JFrame implements ActionListener


{
private JButton btnEvent;
private JLabel label;
public Button1()
{
super("SHOW BUTTON 1");
setSize(300,200);
JPanel panel = new JPanel();
panel.setLayout(new
FlowLayout(FlowLayout.CENTER,0,50));
label = new JLabel("Menampilkan");
btnEvent = new JButton("BUTTON 1");
panel.add(label);
panel.add(btnEvent);
add("North",panel);
btnEvent.addActionListener(this);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource()== btnEvent)
{
Button2 frame = new Button2();
setVisible(false);
}
}
}

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

class Button2 extends JFrame implements ActionListener


{
private JButton btnEvent;
private JLabel label;

public Button2()
{
super("SHOW BUTTON 2");
setSize(300,200);
JPanel panel = new JPanel();
panel.setLayout(new
FlowLayout(FlowLayout.CENTER,0,50));
label = new JLabel("Menampilkan");
btnEvent = new JButton("BUTTON 2");
panel.add(label);
panel.add(btnEvent);
add("South",panel);
btnEvent.addActionListener(this);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource()== btnEvent)
{
Button1 frame = new Button1();
setVisible(false);
}
}
}

public class TryFrame


{
public static void main(String[] args)
{
Button1 frame = new Button1();
}
}

Hasil Program :
Penjelasan :
Program diatas menggabungkan beberpa frame sehingga dapat menjadi satu
kesatuan. Program diatas apabila user menekan tombol button 1 maka akan
masuk ke frame button2 begitupun pada frame button2 apabila ditekan maka
akan berpindah ke frame button1. Oleh karena itu terdapat dua class yang
pertama class untuk Button 1 dan class kedua untuk Button2. Kedua class
tersebut memiliki konsep yang sama, namun tata letak dan nama buttonnya
saja yang berbeda.

IV. Tugas Praktikum


1. Nama Program : Membuat multiple catch
Source Code :
import java.io.*;

public class TiketNonton {


public static void main (String [] args) throws
IOException{
String pilihan = "";
int total = 0, harga;
String banyak = "";
int jumlah = 0;
String bayar = "";
int kembalian = 0;
String simbol = "";
int a, b, c, d, x=0;

try
{
BufferedReader br = new
BufferedReader(new InputStreamReader(System.in));
do{
d = total;
jumlah = jumlah + d;

System.out.println("*********************************
*********");
System.out.println("\n\tTiket
Nonton");

System.out.println("\n*******************************
*********\n");
System.out.println("1. The Nun
(Normal)");
System.out.println("2. Teman Tapi
Menikah (Arithmetic)");
System.out.println("3. Tentukan
Kursi (Out of bound)");

System.out.println("\n*******************************
*********");
System.out.println("\nMasukkan
pilihan anda : ");
pilihan = br.readLine();
a = Integer.valueOf(pilihan);
switch(a)
{
case 1 :
harga = 30000;
System.out.println ("\nFilm
yang dipilih : The Maze Runner");
System.out.println ("\nHarga
: "+harga);
System.out.println ("\nBanyak
pembelian : ");
banyak = br.readLine();
b = Integer.valueOf(banyak);
a = Integer.valueOf(pilihan);
total = b * harga;
System.out.println ("\nTotal
pembayaran : "+total);
break;

case 2 :
harga = 25000;
System.out.println ("\nHarga
: "+harga);
System.out.println ("\nBanyak
pembelian : ");
banyak = br.readLine();
b = Integer.valueOf(banyak);
a = Integer.valueOf(pilihan);
total = harga / 0;
System.out.println ("\nTotal
pembayaran : "+total);
break;

case 3 :
String[] array = new
String[9];
array[9] = "ziza";
System.out.println("Pemilik
Kursi Nomor Urut 9 adalah : "+array[9]);
break;

default :
System.out.println ("Pilihan
salah!");
}
System.out.println ("\nKembali ke
menu utama? (y/n) : ");
simbol = br.readLine();
}
while (simbol.equals("y"));
x = jumlah+total;
System.out.println ("\nTotal pembayaran :
"+x);
System.out.println ("\nUang anda : ");
bayar = br.readLine();
c = Integer.valueOf(bayar);
kembalian = c-x;
System.out.println ("\nUang kembali anda
: "+kembalian);
}
catch (NumberFormatException e) {
System.err.println ("\nException yang
ditangkap : "+e);
}
catch (ArithmeticException i) {
System.err.println ("\nException yang
ditangkap : "+i);
}
catch (ArrayIndexOutOfBoundsException exc) {
System.err.println ("\nException yang
ditangkap : "+exc);
}
finally
{
System.out.println ("\nPernyataan di
dalam blok finally");
}
}
}

Hasil Program :
Penjelasan :
Program diatas menerapkan program excepton handling sendiri dengan
multiple catch dalam bidang perfilman. Program diatas menampilkan pilihan
tiket menonton. Apabila user memilih satu, maka akan menampilkan progam
normal, dimana terdapat perhitungan banyak pembelian tiket dengan harga
yang tertera. Hasilnya tidak akan terjadi exception. Namun jika user memilih
dua, maka akan terjadi exception dimana harga dibagi dengan 0 sehingga akan
terjadi exception ArithmeticException. Jika user memilih 3 maka akan terjadi
pelemparan exception dengan jenis kesalahan exception
ArrayIndexOutOfBoundsException. Program ini menerapkan input dari
user dengan menggunakan buffer reader. Untuk memilih menu menggunakan
switch case. Program ini terdapat perhitungan pembayaran serta kembalian
untuk pembayaran yang dilakukan user.

2. Nama Program : Menggunakan list dan combo box


Source Code :
import javax.swing.*;
import javax.swing.event.*;
import java.awt.*;
import java.awt.event.*;
class Button1 extends JFrame implements ActionListener
{
private JLabel label, label2, label3;
private JComboBox daftar;

public Button1()
{
super("HOME");
setSize(400,300);

String menu[] = {"HOME", "MENU", "EXIT"};


//mengatur item pada list
daftar = new JComboBox(menu);
daftar.setSelectedIndex(0);
label = new JLabel("Menu : ");
label2 = new JLabel("SELAMAT DATANG DI JUS Q-
TA");
ImageIcon gambar = new ImageIcon("I1.JPEG");
label3 = new JLabel(gambar);

JPanel p1 = new JPanel();


p1.setLayout(new
FlowLayout(FlowLayout.LEFT,5,5));
p1.add(label);
p1.add(daftar);

JPanel p2 = new JPanel();


p2.setLayout(new
FlowLayout(FlowLayout.CENTER,5,5));
p2.add(label2);
p2.add(label3);

add("North", p1);
add("Center", p2);

daftar.addActionListener(this);

setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

public void actionPerformed(ActionEvent e)


{
JComboBox cbb = (JComboBox)e.getSource();
String keterangan =
(String)cbb.getSelectedItem();

if(keterangan=="MENU")
{
Button2 frame = new Button2();
//menampilkan frame dari class Button2
setVisible(false); //menyembunyikan frame
dari class Button1
}
else if(keterangan=="EXIT")
{
Button3 frame = new Button3();
//menampilkan frame dari class Button2
setVisible(false); //menyembunyikan frame
dari class Button1
}
}
}

import javax.swing.*;
import javax.swing.event.*;
import java.awt.*;
import java.awt.event.*;

class Button2 extends JFrame implements ActionListener,


ListSelectionListener
{
private JLabel label, label2, label3 ;
private JComboBox daftar;
private JList list1;
private JTextArea tArea;

public Button2()
{
super("MENU");
setSize(400,300);

String menu[] = {"HOME", "MENU", "EXIT"};


daftar = new JComboBox(menu);
daftar.setSelectedIndex(1);
String kota[] = {"Jus Jeruk", "Jus Mangga",
"Jus Alpukat", "Jus Strawberry", "Jus Anggur"};
list1 = new JList(kota);
list1.setSelectedIndex(0);
label = new JLabel("Menu : ");
label2 = new JLabel("Pilih Jus di Bawah ini ");
ImageIcon gambar = new ImageIcon("I2.JPG");
label3 = new JLabel(gambar);
tArea = new JTextArea(6,15);
tArea.setEditable(false);

JPanel p1 = new JPanel();


p1.setLayout(new
FlowLayout(FlowLayout.LEFT,5,5));
p1.add(label);
p1.add(daftar);

JPanel p2 = new JPanel();


p2.setLayout(new
FlowLayout(FlowLayout.CENTER,5,5));
p2.add(label2);
p2.add(label3);

JPanel p3 = new JPanel();


p3.add(list1);
p3.add(tArea);

add("North", p1);
add("Center", p2);
add("South", p3);

daftar.addActionListener(this);
list1.addListSelectionListener(this);

setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

public void valueChanged(ListSelectionEvent e)


//mengisi event
{
tArea.setText("\nMenu yang Anda pilih :
\n"+list1.getSelectedValue()); //menampilkan pilihan

public void actionPerformed(ActionEvent e)


{
JComboBox cbb = (JComboBox)e.getSource();
String keterangan =
(String)cbb.getSelectedItem();

if(keterangan=="HOME")
{
Button1 frame = new Button1();
//menampilkan frame dari class Button2
setVisible(false); //menyembunyikan frame
dari class Button1
}
else if(keterangan=="EXIT")
{
Button3 frame = new Button3();
//menampilkan frame dari class Button2
setVisible(false); //menyembunyikan frame
dari class Button1
}
}
}

import javax.swing.*;
import javax.swing.event.*;
import java.awt.*;
import java.awt.event.*;
class Button2 extends JFrame implements ActionListener,
ListSelectionListener
{
private JLabel label, label2, label3 ;
private JComboBox daftar;
private JList list1;
private JTextArea tArea;

public Button2()
{
super("MENU");
setSize(400,300);

String menu[] = {"HOME", "MENU", "EXIT"};


daftar = new JComboBox(menu);
daftar.setSelectedIndex(1);
String jus[] = {"Jus Jeruk", "Jus Mangga", "Jus
Alpukat", "Jus Strawberry", "Jus Anggur"};
list1 = new JList(jus);
list1.setSelectedIndex(0);
label = new JLabel("Menu : ");
label2 = new JLabel("Pilih Jus di Bawah ini ");
ImageIcon gambar = new ImageIcon("I2.JPG");
label3 = new JLabel(gambar);
tArea = new JTextArea(6,15);
tArea.setEditable(false);

JPanel p1 = new JPanel();


p1.setLayout(new
FlowLayout(FlowLayout.LEFT,5,5));
p1.add(label);
p1.add(daftar);

JPanel p2 = new JPanel();


p2.setLayout(new
FlowLayout(FlowLayout.CENTER,5,5));
p2.add(label2);
p2.add(label3);

JPanel p3 = new JPanel();


p3.add(list1);
p3.add(tArea);

add("North", p1);
add("Center", p2);
add("South", p3);

daftar.addActionListener(this);
list1.addListSelectionListener(this);

setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void valueChanged(ListSelectionEvent e)
//mengisi event
{
tArea.setText("\nMenu yang Anda pilih :
\n"+list1.getSelectedValue()); //menampilkan pilihan

public void actionPerformed(ActionEvent e)


{
JComboBox cbb = (JComboBox)e.getSource();
String keterangan =
(String)cbb.getSelectedItem();

if(keterangan=="HOME")
{
Button1 frame = new Button1();
//menampilkan frame dari class Button2
setVisible(false); //menyembunyikan frame
dari class Button1
}
else if(keterangan=="EXIT")
{
Button3 frame = new Button3();
//menampilkan frame dari class Button2
setVisible(false); //menyembunyikan frame
dari class Button1
}
}
}

public class ListCombo


{
public static void main(String[] args)
{
Button1 frame = new Button1(); //menampilkan
frame dari class Button1
}
}

Hasil Program :
Penjelasan :
Program diatas menerapkan konsep penggabungan beberapa frame. Program
tersebut mengenai pemilihan menu jus dengan menerapkan konsep combobox
dan JList. Combo box digunakan untuk menampilkan menu utama seperti
"HOME", "MENU", "EXIT" dan JList digunakan untuk menampilkan sub
menu yaitu menu jus "Jus Jeruk", "Jus Mangga", "Jus Alpukat", "Jus
Strawberry", "Jus Anggur" pada button 2. Ketika user memilih combo
box, maka pada frame akan menampilkan gambar serta label dimana tiap
frame menamilkan gambar dan label yang berbeda beda. Hanya JComboBox
yang dapat menampilkan gambar dan label, JList hanya menampilkan
informasi pada Text Area ketika user memilih menu tersebut. Combo Box
"HOME" akan menampilkan halaman utama dimana terdapat sambutan selamat

dating. Pada frame kedua yaitu Combo Box "MENU" akan menampilkan menu
jus yang tersedia dan informasi pesanan pada Text Area. Pada frame ketiga
yaitu "EXIT" akan menampilkan ucapan terimakasih karena telah memesan
jus.

V. Kesimpulan
Kesimpulan yang didapat dari praktikum ini adalah :
1. Exception adalah suatu kondisi abnormal yang terjadi pada saat
mengeksekusi suatu perintah.
2. Ketika terjadi kondisi abnormal yang mengakibatkan exception, maka
method di mana exception terjadi memiliki dua pilihan, yaitu menangani
sendiri atau meneruskannya ke luar dengan cara membuat objek yang
menjelaskan exception tersebut dan melemparkannya keluar agar
ditangani oleh kode yang memanggil method tersebut.
3. Terdapat lima keyword exception yaitu try yang digunakan untuk
menempatkan kode program yang mungkin menyebabkan terjadinya
exception. Catch digunakan untuk menangkap kesalahan pada block try.
Finally akan selalu dijalankan apapun yang terjadi, Throw digunakan
untuk melempar exception dan Throws digunakan untuk mendeklarsi
method yang akan mengalami exception.
4. Multiple catch dapat digunakan sesuai dengan jenis exception yang
dideteksi saat block try dijalankan.
5. JComboBox digunakan untuk meampilkan sekumpulan daftar pilihan
yang dapat diplih user dengan kondisi normal saja yang ditampilkan dan
yang lainnya akan ditampilkan ketika sudah di klik. JLits akan
menampilkan sekumpulan daftar yang dapat dipilih.
6. JList tidak bisa menampilkan gambar pada frame lain, namun bisa
memberikan informasi detail tentang pilihan tersebut pada Text Area.
VI. Daftar Rujukan
Rahman, Fathur. 2016. Belajar Mengenal Exception Handling dalam Coding
Java. (Online).( https://www.okedroid.com/2016/11/belajar-mengenal-
exception-handling-dalam-coding-java.html ) diakses pada 30 Oktober
2018
BAHASA JAVA. 2018. Memahami Exception Handling Pada Pemrograman
Java. (Online). ( http://www.bahasajava.com/2018/03/exception-handling-
Java.html ) diakses pada 30 Oktober 2018
TermasMedia. 2016. Memahami Cara Mengani Aksi (Event) Di Pemrograman
Java. (https://www.termasmedia.com/pemrograman/java/266-memahami-
cara-menangani-aksi-event-di-pemrograman-java.html ) diakses pada 31
Oktober 2018
Indrajani, S.Kom,MM dan Martin, S.Kom. 2004. Pemrograman Berorientasi
Objek dengan Java. Jakarta : PT Elex Media Komputindo.
Pambudi, Anang. 2018. Mengenal Error Java.lang.NullPointerException.
(Online). (http://kodepedia.com/mengenal-error-java-lang-
nullpointerexception/ ) diakses pada 31 Oktober 2018
M Athoillah, Wildan. 2017. Tutorial Exception Handling (throw & throws) pada
Java. (Online). (https://www.wildantechnoart.net/2017/11/exception-
handling-throw-throws-java.html ) diakses pada 31 Oktober 2018

Anda mungkin juga menyukai