Laporan Modul 6 Java
Laporan Modul 6 Java
MODUL VI
EXCEPTION HANDLING
Disusun Oleh:
Umi Farida
/ 150533605050
Wenda Aditama
/ 150533604429
Program Studi:
S1 Pendidikan Teknik Informatika Offering D
BAB I
PENDAHULUAN
A. TUJUAN
1. Mahasiswa mengetahui penanganan kesalahan program dengan exception
2.
3.
4.
5.
handling.
Mahasiswa mampu menerapkan exception handling.
Mahasiswa mampu membedakan penerapan jenis exception handling.
Mahasiswa mampu membuat class exception sendiri.
Mahasiswa mampu melakukan input data melalui keyboard.
B. DASAR TEORI
Exception
Definisi Exception
Suatu mekanisme penanganan kesalahan. Event yang terjadi ketika program menemui
kesalahan saat instruksi program dijalankan. Exception sering digunakan dalam akses
sumberdaya non memori. Catatan : Exception = untuk menangani kesalahan ringan
(mild error). Error = mengindikasikan bahwa error yang terjadi adalah fatal error
(severe problem) dimana proses recovery sangat sulit dilakukan bahkan tidak
mungkin dilakukan.
Contoh Exception
class DivByZero {
public static void main(String args[]) {
System.out.println(3/0);
System.out.println(Pls print me);
}
}
--------------------------------------------------------------Menampilkan pesan error
Exception in thread main java.lang.ArithmeticException: / by
zero at DivByZero.main(DivByZero.java:3)
---------------------------------------------------------------
Exception yang dilempar adalah sebuah object exception (object exception yang
sudah disediakan oleh java atau yang di-create sendiri).
Exception Propagation
Exception dapat ditangani pada tingkat yang lebih tinggi jika di tempat terjadinya
exception tidak ditangani secara tepat. Exception merambat naik (propagate up)
melalui method hierarki sampai exception ditangkap atau sampai mencapai level
method main.
Contoh Exception Propagation :
void method1 throws IOException {
throw new IOException(Error in method1);
}
void method2 throws IOException {
// do stuff, but no catch, just specify method1();
}
void method3 throws IOException {
// do stuff, but no catch, just specify method2();
}
public static void main (String args[]) {
// catch if just specitfy error to console
try {
method3();
} catch (IOException e) {
// handle ethe exception from method1
}
}
Object Exception
Object exception yang dihasilkan dapat dimanfaatkan untuk mengetahui dapat
dimanfaatkan untuk mengetahui lebih lanjut mengenai error atau exception yang
terjadi. Exception merupakan subclass dari class throwable.
Method yang diwarisi oleh exception
getMesaage()
Method ini mengembalikan isi pesan untuk menggambarkan exception yang
terjadi.
printStackTrace()
Method ini menampilkan pesan error dan stack trace ke standard error output
stream yang biasanya merupakan konsol window apabila program merupakan
program konsol.
printStackTrace(PrintStream s)
Method ini mengembalikan pesan error ke objek PrintStream yang dijadikan
parameter. Apabila ingin menampilkan pesan ke konsol, anda dapat menggunakan
system.out sebagai parameter.
BAB II
HASIL
1) Hasil Kelompok
a. Latihan 1
Tabel 1.0 Script DivByZero.java pada latihan 1
DivByZero.java
class DivByZero{
public static void main(String[] args) {
System.out.println(5/0);
System.out.println("ini adalah keluaran program");
}
}
b. Latihan 2
Tabel 1.1 Script DivByZeroWithException.java pada latihan 2
DivByZeroWithException.java
class DivByZeroWithException{
public static void main(String[] args) {
try {
System.out.println(5/0);
System.out.println("Keluaran program");
}
catch (ArithmeticException exc) {
System.out.println("Exception ditangkap : " + exc);
}
System.out.println("Setelah exception...");
}
}
c. Latihan 3
Tabel 1.2 Script multiplecatch.java pada latihan 3
multiplecatch.java
class multiplecatch{
public static void main(String[] args) {
try{
int a = 3/0;
int num = Integer.parseInt(args[0]);
System.out.println("Perintah selanjutnya....");
}
catch(ArrayIndexOutOfBoundsException e){
}
catch(NullPointerException e){
}
catch(Exception e){
}
}
}
Tabel 1.3 Script multiplecatch1.java pada latihan 3
multiplecatch1.java
public class multiplecatch2
{
public static void main(String[] args)
{
try
{
}
}
}
}
}
static
void
uji(int
angka)
throws
NullPointerException,
ArithmeticException{
if (angka < 0){
throw new NullPointerException("Kesalahan : null pointer
exception");
}
else {
throw
exception");
}
new
ArithmeticException("Kesalahan
arithmetic
}
public static void main(String[] args) {
try{
uji(-12);
// uji(0);
}
catch (Exception e) {
System.out.println("Exception ditangkap di sini");
}
System.out.println("Statement setelah block try-catch");
}
}
Melakukan Input
g. Membaca input karakter
Tabel 2.3 Script DemoInputKarakter.java
DemoInputKarakter.java
import java.io.*;
class DemoInputKarakter
{
public static void main(String[] args) throws IOException
{
System.out.print("Masukkan sembarang karakter : ");
char ch;
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
ch = (char) br.read();
System.out.println("Karakter yang dimasukkan adalah \'" +ch + "\'");
}
}
}
catch(NumberFormatException nfe)
{
System.out.println("Data yang dimasukkan bukan bilangan
bulat");
System.exit(1);
}
System.out.println("Bilangan
yang
dimasukkan
+bilangan);
}
}
"
+"adalah
"
}
catch(NumberFormatException nfe)
{
System.out.println("Data yang dimasukkan bukan bilangan");
System.exit(1);
}
System.out.println("Bilangan
yang
dimasukkan
+bilangan);
}
}
k. Tugas Praktikum
Tabel 2.7 Script NegativeNumberException.java
NegativeNumberException.java
class NegativeNumberException extends Exception {
private int bilangan;
NegativeNumberException(){
}
NegativeNumberException(String pesan){
super(pesan);
}
NegativeNumberException(String pesan, int nilai){
super(pesan);
bilangan = nilai;
}
public int getBilangan(){
return bilangan;
}
"
+"adalah
"
}
Tabel 2.8 Script UjiEksepsi.java
UjiEksepsi.java
import java.io.*;
class UjiEksepsi{
public static double hitungLuas(int n) throws NegativeNumberException{
if (n < 0){
throw new NegativeNumberException("Bilangan tidak boleh
bernilai negatif", n);
}
double hasil = 6 * n * n;
return hasil;
}
public static void main(String[] args) throws IOException{
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader buf = new BufferedReader(isr);
int rusuk;
System.out.println("Program Perhitungan Luas Permukaan Kubus");
System.out.print("Masukkan nilai rusuk kubus : ");
rusuk = Integer.parseInt(buf.readLine());
try{
System.out.println("Volume = " + hitungLuas(rusuk));
}
catch (NegativeNumberException nne) {
System.out.println("Bilangan : " + nne.getBilangan());
nne.printStackTrace();
}
}
}
l. Tugas Rumah
Tabel 2.9 Script EksepsiMultipleCatch.java
EksepsiMultipleCatch.java
import java.io.*;
class EksepsiMultipleCatch{
2) Hasil Kompilasi
a. Latihan 1 poin a
b. Latihan 2 poin a
c. Latihan 3
Latihan 3 poin a
Latihan 3 poin b
Latihan 3 poin c
Latihan 3 poin d
Latihan 3 poin e
d. Latihan 4
Latihan 4 poin a
Latihan 4 poin b
Latihan 4 poin c
e. Latihan 5
Latihan 5.1 a
Latihan 5.1 b
f. Latihan 6
Melakukan Input
k. Tugas Praktikum
l. Tugas rumah
3) Pembahasan
1. Latihan 1
Kode program pada latihan satu digunakan untuk menampilkan hasil perhitungan 5/0
dan Ini adalah keluaran program. Akan tetapi, keluaran yang ditampilkan berupa
exception. Hal ini dikarenakan adanya operasi aritmatika tidak sah yaitu bilangan
dibagi nol. Berdasarkan latihan satu dapat disimpulkan ciri-ciri program yang tidak
menggunakan exception handling adalah program yang memiliki output pesan
exception dan di dalam kode program tidak terdapat blok try-catch yang merupakan
blok exception handling.
2. Latihan 2
Kode program pada latihan dua digunakan untuk menampilkan hasil perhitungan 5/0
dan Keluaran program, namun akan terjadi error karena terdapat operasi aritmatika
tidak sah yaitu bilangan yang dibagi nol. Untuk menangani error exception tersebut
dibuatlah exception handling yang berupa blok try-catch. Langkahnya adalah bagian
program yang akan diuji kebenarannya diletakkan di blok try. Kemudian pada blok
catch akan dilakukan penyeleksian kondisi eksepsi, jika memenuhi kondisi tersebut
maka kode program pada blok try tidak ditampilkan, tetapi kode pada blok catch yang
ditampilkan.
3. Latihan 3
Program ini merupakan program Multiple Catch yang memiliki class multiplecatch. .
Program ini menggunakan keywoard exception handling yaitu Try dan Catch.
Program
ini
menggunakan
macam
catch
yang
pertama
dan jika ditambahkan finally maka catch(Exception e) tidak akan terletak diakhir
melainkan berada diantara try dan finally.
4. Latihan 4
Kode program pada latihan empat digunakan untuk melakukan operasi pembagian dan
menampilkan hasilnya. Hasil ini diperiksa melalui blok try-catch-finally. Langkah
menggunakan blok ini adalah kode program yang akan diperiksa diletakkan di dalam
blok try. Kemudian pada blok catch akan diseleksi eksepsinya, jika terjadi eksepsi
yang sesuai maka kode dalam blok catch akan ditampilkan dan kode pada blok try
tidak ditampilkan. Blok finally digunakan untuk meletakkan kode program sebagai
penutup dari blok exception handling dan akan selalu dijalankan. Blok catch dapat
digunakan berkali-kali namun blok finally hanya boleh ada satu di setiap blok trycatch-finally.
Perbedaan dengan exception handling yang lain adalah dengan blok finally
pemrogram dapat memberikan keterangan tentang eksepsi yang sudah diperiksa.
5. Latihan 5
a. Latihan 5.1
Program 1
Kode program pada program ini digunakan untuk melempar eksepsi jika terjadi
kesalahan input. Pada latihan ini dapat dilihat bahwa pada blok try dilakukan
pengecekan variabel input. Jika kondisinya benar maka RuntimeException akan
dilemparkan dengan keterangan throw demo di dalamnya. Karena kondisi
tersebut benar dan terjadi eksepsi maka kode pada blok catch ditampilkan dan
keterangan throw demo ditampilkan pada pesan eksepsi sebagai hasil dari throw.
Program 2
Kode program pada program ini digunakan untuk memasukkan data mahasiswa
dengan menggunakan fasilitas exception handling. Eksepsi yang digunakan adalah
NullPointerException yaitu eksepsi yang timbul karena penggunaan nilai null yang
tidak tepat. Jika input yang digunakan berupa nilai null, maka akan muncul pesan
yang ada dalam blok catch dan throw dari penyeleksian di blok try.
b. Latihan 5.2
Kode program pada latihan 5.2 digunakan untuk menguji kata kunci throws pada
program. Kata kunci ini digunakan apabila sebuah method menyebabkan eksepsi
namun tidak menangkapnya. Pesan yang dilempar tadi akan ditampilkan pada blok
catch yaitu System.out.println(e.getMessage());.
6. Latihan 6
Kode program pada latihan enam digunakan untuk menguji eksepsi yang dibuat
sendiri pada operasi faktorial. Pada latihan enam eksepsi yang digunakan adalah
NegativeNumberException yaitu nilai yang dimasukkan tidak boleh negatif. Eksepsi
yang digunakan dibuat dalam suatu kelas yang merupakan keturunan dari kelas
Exception. Kemudian pada kelas lain untuk menguji akan dibuat method untuk
melakukan throws terhadap eksepsi tersebut dan di dalam method ini akan dilakukan
seleksi
jika
bilangan
kurang
dari
nol
maka
akan
dilakukan
throw
bilangan dengan tingkat ketelitian di belakang koma. Perbedaan tadi terletak pada
try{bilangan = Double.parseDouble(temp);}.
8. Tugas praktikum
Kode program pada tugas praktikum digunakan untuk melakukan perhitungan luas
permukaan kubus menggunakan exception handling dan masukan. Pada kode program
ini diterapkan exception yang dibuat sendiri yaitu NegativeNumberException untuk
mengecek nilai masukan. Eksepsi ini akan dilempar dan ditampilkan pada blok catch
jika terjadi eksepsi.
9. Tugas rumah
Kode program pada tugas rumah digunakan untuk menguji nilai masukan,
pengujiannya antara lain kesesuaian tipe data yang dimasukkan dan eksepsi lain yang
mungkin terjadi. Pada kode ini digunakan dua blok try-catch karena masukan yang
digunakan berjumlah dua. Eksepsi yang digunakan adalah NumberFormatException
untuk memeriksa nilai apakah yang dimasukkan berupa bilangan dan Exception untuk
memeriksa kemungkinan error lain. Exception digunakan untuk eksepsi yang tidak
didefinisikan jika pada blok try-catch yang memiliki multi-catch dan Exception
selalui diletakkan pada blok catch terakhir.
DAFTAR RUJUKAN
1. Tim Asisten Dosen. 2016. Modul 6 Exception Handling. Malang :
Universitas Negeri Malang.
2. entin.lecturer.pens.ac.id/PBO/Minggu%2012/T%20-%20Exception