Oleh:
Azizah Tri Novanti 170533628613
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 :
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.
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
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
CreateExceptionHandling()
{
CreateExceptionHandling(String pesan)
{
super(pesan);
}
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 TryList()
{
super("MENGGUNAKAN LIST");
setSize(350,125);
daftar.addListSelectionListener(this);//mendafar
event listener yang akan dipanggil jika user mengubah
pilihannya
tArea = new JTextArea(4,15);
tArea.setEditable(false);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
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
public TryComboBox()
{
super("MENGGUNAKAN COMBO BOX");
setSize(350,125);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
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.
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
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);
}
}
}
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.
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.
public Button1()
{
super("HOME");
setSize(400,300);
add("North", p1);
add("Center", p2);
daftar.addActionListener(this);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
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.*;
public Button2()
{
super("MENU");
setSize(400,300);
add("North", p1);
add("Center", p2);
add("South", p3);
daftar.addActionListener(this);
list1.addListSelectionListener(this);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
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);
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
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
}
}
}
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