0% menganggap dokumen ini bermanfaat (0 suara)
44 tayangan16 halaman

13 - MODUL Java Exception Handling

Modul ini membahas penanganan exception dalam pemrograman berorientasi objek. Topik utama yang dibahas meliputi konsep exception handling, penggunaan pernyataan try-catch dan finally untuk menangkap exception, pembuatan custom exception dengan pernyataan throw, perbedaan checked exception dan unchecked exception, serta pendefinisian exception yang dilempar oleh suatu fungsi menggunakan kata kunci throws.
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
44 tayangan16 halaman

13 - MODUL Java Exception Handling

Modul ini membahas penanganan exception dalam pemrograman berorientasi objek. Topik utama yang dibahas meliputi konsep exception handling, penggunaan pernyataan try-catch dan finally untuk menangkap exception, pembuatan custom exception dengan pernyataan throw, perbedaan checked exception dan unchecked exception, serta pendefinisian exception yang dilempar oleh suatu fungsi menggunakan kata kunci throws.
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 16

MODUL PEMROGRAMAN BERORIENTASI OBJEK

(CCC210)

MODUL 13
EXCEPTION HANDLING

DISUSUN OLEH
INDRIANI NOOR HAPSARI, ST, MT

UNIVERSITAS ESA UNGGUL


2020

Universitas Esa Unggul


http://esaunggul.ac.id 0 / 16
MODUL 13 - EXCEPTION HANDLING

A. Kemampuan Akhir Yang Diharapkan

Setelah mempelajari modul ini, diharapkan:


1. Mahasiswa memahami dan menjelaskan konsep exception handling.
2. Mahasiswa dapat memahami dan menjelaskan manfaat exception handling.
3. Mahasiswa dapat menerapkan konsep exception handling dalam program.

B. Outline Topik

1. Konsep Exception Handling...............................................................................................2


2. Java Try and Catch............................................................................................................. 3
3. Finally.................................................................................................................................... 5
4. Membuat Custom Exception dengan “throw”..................................................................6
5. Checked Exception..............................................................................................................8
6. Mendefinisikan Exception di header fungsi dengan “throws”....................................... 9

Universitas Esa Unggul


http://esaunggul.ac.id 1 / 16
C. Uraian

1. Konsep Exception Handling

Ketika menjalankan program, mungkin terjadi sejumlah error / kesalahan yang


menyebabkan program tidak dapat berfungsi sebagaimana mestinya. Kesalahan
dapat terjadi karena:
a. Kesalahan pada kode program yang dibuat oleh programmer
b. Kesalahan yang terjadi karena salah input
c. Kesalahan yang terjadi karena kondisi yang tidak terduga sebelumnya.
Ketika terjadi kesalahan, program akan berhenti dan menampilkan pesan kesalahan.
Atau dengan istilah lain, program akan “Throw an Exception” atau “melemparkan
kesalahan”.

Exception adalah sebuah objek yang merepresentasikan terjadinya error pada saat
program dijalankan (runtime error). Ketika program dikompilasi, maka error ini belum
terdeteksi sampai program dijalankan dan terjadi kesalahan dalam operasinya.

Contoh kesalahan yang dapat terjadi pada saat runtime adalah sebagai berikut:
a. Pembagian dengan 0
b. Memanggil substring dari sebuah string dengan index melebihi panjang string
c. Mencoba membaca input dengan tipe yang salah melalui Scanner
d. Mencoba membaca file yang tidak ada

Dapat kita katakan bahwa sebuah program dengan kesalahan akan melempar
(throw) sebuah exception. Dan kita dapat menangani/memperbaiki exception
tersebut dengan “menangkapnya (catch)”.

Universitas Esa Unggul


http://esaunggul.ac.id 2 / 16
2. Java Try and Catch

Statement try memungkinkan pemrogram mendefinisikan sebuah blok kode untuk


diuji kesalahannya saat program berjalan. Statement catch memungkinkan
pemrogram mendefinisikan sebuah kode untuk dijalankan jika terjadi kesalahan di
blok try.

Kata kunci try dan catch digunakan secara berpasangan sebagai berikut:

try {
// Block of code to try
} catch (Exception e) {
// Block of code to handle errors
}

Perhatikan contoh berikut ini. Contoh ini akan menghasilkan sebuah kesalahan,
karena myNumbers[10] tidak ada.

public class Main {


public static void main(String[ ] args) {
int[] myNumbers = {1, 2, 3};
System.out.println(myNumbers[10]); // error!
}
}

Apabila kesalahan tersebut tidak ditangani dalam penanganan exception, maka akan
ketika program dijalankan program akan berhenti dan melempar exception dengan
pesan berikut ini.

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 10

at Main.main(Main.java:4)

Universitas Esa Unggul


http://esaunggul.ac.id 3 / 16
Kita dapat menggunakan try...catch untuk menangkap kesalahan tersebut dan
menjalankan sejumlah kode untuk menanganinya.

public class Main {


public static void main(String[ ] args) {
try {
int[] myNumbers = {1, 2, 3};
System.out.println(myNumbers[10]);
} catch (Exception e) {
System.out.println("Something went wrong.");
}
}
}

Dengan menggunakan kode try...catch di atas, maka program tidak akan


keluar/berhenti dan hanya menampilkan pesan kesalahan sebagai berikut.

Something went wrong.

Universitas Esa Unggul


http://esaunggul.ac.id 4 / 16
3. Finally
Statement finally digunakan untuk mengeksekusi kode program setelah
try...catch apapun hasilnya (dengan atau tanpa adanya exception).
Berikut adalah contoh penggunaan finally.

public class Main {


public static void main(String[] args) {
try {
int[] myNumbers = {1, 2, 3};
System.out.println(myNumbers[10]);
} catch (Exception e) {
System.out.println("Something went wrong.");
} finally {
System.out.println("The 'try catch' is finished.");
}
}
}

Dengan menggunakan kode finally seperti yang dituliskan di kode program di


atas, maka ketika program menemukan kesalahan, program akan melempar
exception dan akan ditangkap oleh blok catch, sehingga program tidak akan berhenti
namun menampilkan pesan kesalahan “Something went wrong”. Setelah itu, kode
program di blok finally akan dijalankan, sehingga output program akan menjadi
seperti berikut ini.

Something went wrong.

The 'try catch' is finished.

Universitas Esa Unggul


http://esaunggul.ac.id 5 / 16
4. Membuat Custom Exception dengan “throw”

Statement throw digunakan untuk membuat custom error. Statement throw


digunakan bersama dengan tipe exception. Ada banyak tipe exception yang
tersedia di java, yaitu ArithmeticException, FileNotFoundException,
ArrayIndexOutOfBoundsException, SecurityException, dan lain
sebagainya.

Berikut ini adalah contoh kode program yang melempar sebuah exception ketika nilai
age di bawah 18 dengan mencetak pesan “Access denied”. Jika age bernilai 18
atau lebih, maka program akan mencetak pesan “Access granted”.

public class Main {


static void checkAge(int age) {
if (age < 18) {
throw new ArithmeticException("Access denied - You must
be at least 18 years old.");
}
else {
System.out.println("Access granted - You are old
enough!");
}
}

public static void main(String[] args) {


checkAge(15); // Set age to 15 (which is below 18...)
}
}

Ketika program di atas dijalankan, maka ketika fungsi checkAge(15) dipanggil,


program akan mengeksekusi fungsi checkAge, dan masuk ke kondisi age < 18,
kemudian melempar ArithmeticException yang akan membuat program
berhenti berjalan dan mengeluarkan pesan berikut ini.

Universitas Esa Unggul


http://esaunggul.ac.id 6 / 16
Exception in thread "main" java.lang.ArithmeticException: Access denied - You must be at

least 18 years old.

at Main.checkAge(Main.java:4)

at Main.main(Main.java:12)

Agar program hanya menampilkan kesalahan tanpa berhenti berjalan, maka fungsi
checkAge harus dipanggil dalam blok try...catch sehingga kesalahan dapat
ditangani.

Universitas Esa Unggul


http://esaunggul.ac.id 7 / 16
5. Checked Exception

Checked Exception adalah sebuah error yang harus ditangani oleh program
(apabila tidak ditangani, maka program tersebut tidak dapat dikompilasi). Jika
beberapa kode dalam sebuah fungsi melempar Checked Exception, maka fungsi
tersebut harus melakukan salah satu dari dua hal berikut:
1. menangani exception tersebut dengan menuliskan blok try...catch atau
2. mendefinisikan exception tersebut dengan melempar katakunci throws pada
header fungsi.

Sebagai contoh, pemrosesan Input/Output (I/O) file harus ditangani untuk


menghindari kegagalan I/O. Berikut ini adalah contoh program Java untuk membuka

file di lokasi “C:\ test\ a.txt” dan mencetak tiga baris pertama dari file tersebut.

import java.io.*;

class Main {
public static void main(String[] args) {
FileReader file = new FileReader("C:\\test\\a.txt");
BufferedReader fileInput = new BufferedReader(file);

// Print first 3 lines of file "C:\test\a.txt"


for (int counter = 0; counter < 3; counter++)
System.out.println(fileInput.readLine());

fileInput.close();
}
}

Program tersebut tidak dapat dikompilasi, karena fungsi main() menggunakan


FileReader dan FileReader melempar checked exception yaitu

Universitas Esa Unggul


http://esaunggul.ac.id 8 / 16
FileNotFoundException. Program tersebut juga menggunakan fungsi
readLine() dan close() dan kedua fungsi tersebut juga melempar checked
exception yaitu IOException.

Sehingga, ketika program dikompilasi, maka akan menghasilkan output sebagai


berikut.

Exception in thread "main" java.lang.RuntimeException: Uncompilable source code -

unreported exception java.io.FileNotFoundException; must be caught or declared to be

thrown

at Main.main(Main.java:5)

Untuk memperbaiki program di atas, maka kita harus mendefinisikan daftar


exception dengan menggunakan throws, atau perlu menambahkan blok
try...catch.

6. Mendefinisikan Exception di header fungsi dengan “throws”

Perhatikan kembali contoh program berikut ini.

import java.io.*;

class Main {
public static void main(String[] args) {
FileReader file = new FileReader("C:\\test\\a.txt");
BufferedReader fileInput = new BufferedReader(file);

// Print first 3 lines of file "C:\test\a.txt"


for (int counter = 0; counter < 3; counter++)
System.out.println(fileInput.readLine());

Universitas Esa Unggul


http://esaunggul.ac.id 9 / 16
fileInput.close();
}
}

Untuk memperbaiki program di atas agar dapat dikompilasi, maka kita harus
mendefinisikan daftar exception dengan menggunakan throws, atau perlu
menambahkan blok try...catch. Pada bagian ini, kita akan mendemonstrasikan
cara menggunakan throws di header fungsi.

Karena FileNotFoundException merupakan turunan dari kelas IOException,


maka kita dapat hanya mendefinisikan satu exception yaitu IOException di daftar
throws dan membuat kode program di atas menjadi bebas dari error / dapat
dikompilasi.

import java.io.*;

class Main {
public static void main(String[] args) throws IOException {
FileReader file = new FileReader("C:\\test\\a.txt");
BufferedReader fileInput = new BufferedReader(file);

// Print first 3 lines of file "C:\test\a.txt"


for (int counter = 0; counter < 3; counter++)
System.out.println(fileInput.readLine());

fileInput.close();
}
}

Pada kode program di atas, program akan melempar error dan berhenti apabila tidak

Universitas Esa Unggul


http://esaunggul.ac.id 10 /
16
menemukan file di url yang telah dituliskan. Agar program tetap berjalan walaupun
file tidak ditemukan, maka kita dapat menuliskan program tersebut ke dalam blok
try...catch sebagai berikut.

import java.io.*;

class Main {
public static void main(String[] args) {
try {
FileReader file = new FileReader("C:\\test\\a.txt");
BufferedReader fileInput = new BufferedReader(file);

// Print first 3 lines of file "C:\test\a.txt"


for (int counter = 0; counter < 3; counter++)
System.out.println(fileInput.readLine());

fileInput.close();
} catch (IOException ex)
{
System.out.println(“File not found.”);
}
}
}

Dengan menggunakan kode try...catch di atas, maka program tidak akan


keluar/berhenti dan akan menampilkan pesan kesalahan sebagai berikut ketika file
"C:\\test\\a.txt" tidak ditemukan.

File not found.

Universitas Esa Unggul


http://esaunggul.ac.id 11 /
16
7. Kontroversi Unchecked Exceptions

Karena Java tidak memerlukan fungsi untuk menangkap atau mendefinsikan


Unchecked Exceptions (seperti RuntimeException, Error, dan kelas
turunannya), programmer mungkin akan mencoba menulis kode yang hanya
melempar unchecked exception saja atau membuat custom exception yang
diturunkan dari kelas RuntimeException. Kedua jalan pintas ini memungkinkan
programmer menuliskan kode program tanpa terganggu oleh compiler error dan
tanpa harus mendefinisikan atau menangkap exception. Meskipun cara ini nampak
nyaman bagi programmer, namun hal ini akan menghindari niat untuk menangani
kesalahan tersebut atau menyebabkan persoalan bagi programmer lain yang
menggunakan kode yang Anda tuliskan.

Mengapa desainer memutuskan untuk memaksa sebuah fungsi dengan melempar


unchecked exception yang dapat dilemparkan di dalamnya? Exception yang
dilemparkan oleh fungsi tersebut merupakan bagian dari antarmuka program.
Program yang memanggil fungsi tersebut harus tahu tentang exception yang
mungkin dapat dilemparkan oleh fungsi tersebut sehingga mereka bisa menentukan
apa yang harus dilakukan untuk menanganinya. Exception ini merupakan bagian dari
antarmuka pemrograman fungsi seperti halnya parameter fungsi dan nilai yang
dikembalikannya.

Runtime exception hanya diperuntukkan untuk persoalan pemrograman yang mana


kode API client tidak dapat diharapkan memperbaiki persoalan tersebut atau
menangani persoalan tersebut dengan cara apapun. Persoalan ini meliputi:
1. Ekspresi aritmatika, seperti pembagian dengan 0
2. Pointer exception, seperti mencoba mengakses sebuah objek melalui null
reference.
3. Indexing exception, seperti mencoba mengakses sebuah elemen array dengan
index yang terlalu besar atau terlalu kecil.

Universitas Esa Unggul


http://esaunggul.ac.id 12 /
16
Runtime exception dapat terjadi dimanapun dalam program, dan dalam jumlah yang
banyak, sehingga pendefinisian runtime exception di setiap deklarasi fungsi dapat
membingungkan/mengurangi kejelasan program. Sehingga, compiler tidak
mengharuskan pemrogram untuk menangkap runtime exception (walaupun bisa
dilakukan).

Kasus dimana merupakan hal yang umum dilakukan untuk melempar


RuntimeException ketika user memanggil fungsi dengan cara yang tidak benar.
Sebagai contoh, fungsi dapat memeriksa apakah salah satu argumennya null. Jika
argumennya null, maka fungsi tersebut akan melempar NullPointerException
yang merupakan unchecked exception.

Kesimpulannya, jangan melempar sebuah RuntimeException atau membuat


turunan dari RuntimeException hanya karena Anda tidak ingin repot
mendefinisikan exception di fungsi yang dapat melempar kesalahan tersebut.

Apabila client dapat mengetahui dengan jelas apa yang harus dilakukan untuk
melakukan pemulihan dari sebuah exception, maka buatlah sebuah checked
exception. Jika client tidak dapat melakukan apapun untuk memulihkan dari sebuah
exception, maka buatlah unchecked exception.

Universitas Esa Unggul


http://esaunggul.ac.id 13 /
16
D. Latihan
1. Checked Exception adalah sebuah error yang harus ditangani oleh program
(apabila tidak ditangani, maka program tersebut tidak dapat dikompilasi).
a) Benar
b) Salah
c) Tidak diketahui
2. Unchecked Exception adalah sebuah error yang harus ditangani oleh program
(apabila tidak ditangani, maka program tersebut tidak dapat dikompilasi).
a) Benar
b) Salah
c) Tidak diketahui
3. Dengan menggunakan try...catch, maka bila terjadi exception, program
dapat tetap berjalan dan memperbaiki kesalahan dengan menjalankan kode
program yang dituliskan di blok “catch”.
a) Benar
b) Salah
c) Tidak diketahui
4. Pembagian dengan 0 merupakan contoh unchecked exception.
a) Benar
b) Salah
c) Tidak diketahui
5. Mencoba membaca sebuah file yang tidak ada merupakan contoh unchecked
exception.
a) Benar
b) Salah
c) Tidak diketahui

Universitas Esa Unggul


http://esaunggul.ac.id 14 /
16
E. Daftar Referensi

Stuart Reges and Marty Stepp, Building Java Programs : A Back to Basics Approach,
Pearson, 2019.
buildingjavaprograms.com
https://docs.oracle.com/javase/tutorial/essential/exceptions/definition.html

Universitas Esa Unggul


http://esaunggul.ac.id 15 /
16

Anda mungkin juga menyukai