Anda di halaman 1dari 21

LAPORAN RESMI PRAKTIKUM DASAR PEMOGRAMAN

EXCEPTION

Ke - 6

Widad Alfiyah Z

1 D4 Telekomunikasi A

2220600013

Ida Anisah S.ST,MT

11 April 2021

Praktikum Dasar Programming 2 38


Mike Yuliana-PENS ITS
Percobaan 6
Exception

Pokok Bahasan
• Penanganan Eksepsi
• Menangkap Eksepsi
• Catch Secara bertingkat
• Melontarkan Eksepsi
• Melontarkan kembali Eksepsi
• Klausa Throws

Tujuan Belajar
Dengan praktikum ini mahasiswa diharapkan dapat:
• Dapat memahami cara penanganan Eksepsi
• Memahamkan cara Menangkap Eksepsi
• Dapat menjelaskan konsep catch secara bertingkat
• Memahamkan cara melontarkan eksepsi
• Memahamkan cara melontarkan kembali eksepsi
• Dapat menjelaskan tentang klausa throws

Praktikum Dasar Programming 2 39


Mike Yuliana-PENS ITS
Dasar Teori
A. Pemahaman Dasar
Eksepsi (exeption) adalah suatu mekanisme yang digunakan oleh beberapa bahasa
pemrograman untuk mendeskripsikan apa yang harus dilakukan jika ada suatu kondisi
yang tidak diinginkan terjadi. Eksepsi dapat dijumpai saat:
• Mengakses method dengan argumen yang tidak sesuai
• Membuka file yang tidak ada
• Koneksi jaringan yang terganggu
• Manipulasi operan yang nilainya keluar dari batasan yang didefinisikan
• Pemanggilan class yang tidak ada

Java menyediakan dua kategori besar untuk eksepsi yang disebut sebagai checked
exception dan unchecked exception.
• Checked Exception adalah eksepsi yang diantisipasi oleh programmer untuk
dihandle dalam program dan terjadi dikarenakan oleh kondisi luar yang siap
muncul saat program berjalan. Misalnya membuka file yang tidak ada atau
gangguan jaringan.
• Unchecked Exception bisa muncul dari kondisi yang merepresentasikan adanya
bug atau situasi yang secara umum dianggap terlalu sulit bagi program untuk
menghandlenya. Disebut sebagai unchecked karena kita tidak perlu
mengeceknya atau melakukan sesuatu jika kondisi ini terjadi. Eksepsi yang
muncul dari kategori situasi yang merepresentasikan bug ini disebut sebagai
runtime exception. Misalnya mengakses array melebihi size yang dimilikinya.
• Sedangkan eksepsi yang muncul sebagai akibat dari isu environment software –
yang ini jarang sekali atau sulit sekali untuk dihandle- disebut sebagai error,
misalnya running out memory.

Praktikum Dasar Programming 2 40


Mike Yuliana-PENS ITS
Jadi, class Exception mendefinisikan kondisi error yang ringan yang dijumpai oleh
program. Sedangkan untuk kondisi error yang berat didefinisikan dengan Error.
• Class Exception adalah sebuah class dasar yang merepresentasikan checked
exception. Dalam hal ini, bukannya membiarkan terjadinya penghentian program,
sebaliknya Anda harus menuliskan beberapa kode untuk menghandle eksepsi dan
berikutnya melanjutkan program.
• Class Error adalah class dasar yang digunakan untuk kondisi error serius yang
tidak terdeteksi. Dalam banyak kasus, Anda harus membiarkan program
diterminasi.
• Class RuntimeException adalah class dasar yang digunakan untuk unchecked
exception yang bisa muncul sebagai akibat dari bug program. Pada banyak
kasus, Anda harus membiarkan program dihentikan.

Ketika dalam program terjadi eksepsi, method yang menemukan error tersebut bisa
menghandle sendiri atau melemparkannya ("throw") kembali kepada pemanggilnya
untuk memberi sinyal bahwa telah terjadi suatu masalah. Sebagai contoh, Coba jalankan
program ini. Apa hasilnya?
public class Eksepsi {
public static void main (String[] args) {
int i = 0;
String myarray[] = {"Array pertama", "Array kedua", "Array ketiga" };

while (i < 4) {
System.out.println (myarray[i]);
i++;
} MenghandleEksepsi (Exception Handling)
}
}
Jika tidak diberikan kode untuk menghandle situasi, maka

program akan diterminasi dengan sebuah pesan kesalahan seperti contoh hasil runtime
program di atas.

Praktikum Dasar Programming 2 41


Mike Yuliana-PENS ITS
Upaya menghandle eksepsi memungkinkan program untuk menangkap eksepsi,
menghandlenya kemudian melanjutkan eksekusi program. Dalam hal ini digunakan
statemen try dan catch. Dengan perincian sbb :
• Blok try → adalah kode yang memungkinkan terjadinya pelemparan (throw)
eksepsi tertentu
• Blok catch → adalah kode yang akan dieksekusi jika sebuah tipe eksepsi
dilemparkan

try {
//code that might throw a particular exception
} catch(MyExceptionType myExcept) {
//code to execute if MyExceptionType exception is thrown
} catch(Exception otherExcept) {
//code to execute if a general Exception exception is thrown
}

Dimungkinkan ada beberapa blok catch setelah sebuah blok try, yang masing-masing
akan menghandle tipe eksepsi yang berbeda

Statemen finally
Statemen finally digunakan untuk mendefinisikan sebuah blok kode yang akan senantiasa
dieksekusi jika eksepsi berhasil ditangkap dalam blok catch. Perhatikan contoh di bawah
ini

public class Eksepsi2 {


public static void main(String[] args) {
int i = 0;
String myarray[] = {"Array pertama","Array kedua","Array ketiga"};

while (i < 4) {
try {
System.out.println(myarray[i]);
i++;
} catch (ArrayIndexOutOfBoundsException e){
System.out.println("Re-setting Index Value");
i = 0;
} finally {
System.out.println("This is always printed");
}
}
}
}

Praktikum Dasar Programming 2 42


Mike Yuliana-PENS ITS
Pengesetan indeks kembali menjadi 0 mengakibatkan program dieksekusi dalam infinite
loop.

Kategori eksepsi
Di bawah ini adalah hirarki class yang merepresentasikan pengkategorian eksepsi.
Dalam hal ini class java.lang.Throwable merupakan class parent dari seluruh
objek yang bisa dilempar dan ditangkap menggunakan mekanisme exception handling.

StackOveflowError

VirtualMachineError ---

Error --- OutOfMemoryError

AWTError

Throwable ArithmeticException

RuntimeException ---

NullPointerException

Exception
IndexOutOfBoundsException

EOFException
IOException
FileNotFoundException

Sehingga dalam contoh di atas terdapat statemen :


catch (ArrayIndexOutOfBoundsException e)

Praktikum Dasar Programming 2 42


Mike Yuliana-PENS ITS
merupakan jenis RuntimeException. Jika Anda tidak hafal jenis eksepsinya secara pasti,
bisa mengambil parent classnya.

Eksepsi yang umum


Java menyediakan beberapa eksepsi yang telah didefinisikan. Beberapa eksepsi
yang umum, di antaranya adalah :
• ArithmeticException → hasil dari operasi divide-by-zero terhadap integer
Contoh : int i = 12 / 0;
• NullPointerException → mengakses membernya (atribut atau method) ketika
reference-nya masih menunjuk ke null, misalnya ketika belum dicreate instance
objectnya
Contoh : Date d = null; //tanpa membuat instance
object
System.out.println(d.toString());
• NegativeArraySizeException → membuat array dengan size yang diset negatif
• ArrayIndexOutOfBoundsException → mengakses array melebihi indeks
terbesarnya
• SecurityException → biasanya terjadi pada sebuah browser, ketika class
SecurityManager melempar eksepsi kepada applet yang melakukan operasi
yang membahayakan host atau file-filenya (tidak berhak mengaksesnya), misalnya
mengakses file system lokal, membuka soket ke sebuah host yang berbeda dengan
host yang melayani applet, dll

Overriding method & eksepsi


Ketika meng-override method yang melempar eksepsi, maka method yang meng-
override hanya bisa mendeklarasikan eksepsi yang sama classnya atau subclass dari
eksepsi yang dilemparkan oleh metode yang di-override. Perhatikan contoh berikut ini :

public class TestA {


public void methodA() throws RuntimeException {

}
}
Praktikum Dasar Programming 2 43
Mike Yuliana-PENS ITS
public class TestB1 extends TestA { Bisa karena
public void methodA() throws ArithmeticException { ArithmeticException
… adalah subclass dari
}
} RuntimeException

public class TestB2 extends TestA { Gagal karena Exception


public void methodA() throws Exception { adalah class induk dari

} RuntimeException
}

Soal Pendahuluan
1. Apa perbedaan antara error dan eksepsi!
Jawab:
Perbedaan error dengan eksepsi yaitu:
- Error adalah hal yang sangat tidak mungkin. Satu-satunya cara yang mungkin
dilakukan adalah mengehentikan program. Di sisi lainnya, Eksepsi dapat dipulihkan
dengan menggunakan blok try-catch atau melemparkan eksepsi kembali kepada
caller.
- Error berhubungan dengan lingkungan di mana aplikasi berjalan sementara itu
Eksepsi berhubungan dengan aplikasi itu sendiri.
- Compiler tidak memiliki pengetahuan mengenai unchecked eksepsi, termasuk Error
dan semua subclass dari RunTimeException karena mereka tidak muncul pada saat
runtime program. Compiler hanya memiliki pengetahuan untuk checked exception
saja. Oleh karena itu, compiler akan tetap memaksa programmer untuk menyertakan
blok try-catch bila ada pernyataan-pernyataan yang mungkin saja bisa melemparkan
checked exceptions.
- Error tidak akan bisa ditangani oeh blok try-catch. Meskipun anda mencoba untuk
menanganinya menggunakan blok try-catch tersebut, namun aplikasi anda tidak akan
pulih ketika error tersebut terjadi. Kebalikannya, Eksepsi dapat ditangani oleh blok
try-catch sehingga dapat membuat program tetap berjalan norman jika exception ini
muncul
- Kategori Eksepsi pada Java dibagi meenjadi dua, yaitu checked dan unchecked.
Sementara itu, semua Error termasuk dari kategori unchecked saja.

Praktikum Dasar Programming 2 44


Mike Yuliana-PENS ITS
2. Apakah try dapat mengandung except dan finally sekaligus??Beri contoh
programnya!

Jawab: Iya, karena ketika kita menggunakan blok finally maka kita juga harus
menggunakan blok try. Ini merupakan pasangan yang tidak dapat dipisahkan. Except
pada blok finally dapat ditindak lanjuti sama persis dengan exception lainnya. Bila
blok try memiliki pernyataan break seperti continue atau return, maka pernyataan
dalam blok finally akan tetap di eksekusi.

Contoh program

Output

Praktikum Dasar Programming 2 45


Mike Yuliana-PENS ITS
Soal Percobaan

Jawab:

Program

Program yang sudah di modifikasi

Praktikum Dasar Programming 2 46


Mike Yuliana-PENS ITS
Output

Praktikum Dasar Programming 2 47


Mike Yuliana-PENS ITS
Latihan 2. cobaException.java (ArithmeticException - error div by zero –
try-catch)

Jawab:

Program

Program yang sudah di modifikasi

Praktikum Dasar Programming 2 48


Mike Yuliana-PENS ITS
Output

Jawab:

Program

Praktikum Dasar Programming 2 49


Mike Yuliana-PENS ITS
Output

Praktikum Dasar Programming 2 50


Mike Yuliana-PENS ITS
Jawab:

➢ Latihan 4

Program

Output

Program yang sudah di modifikasi

Output
Hasil perbandingan: Program yang sudah dimodifikasi dan yang sebelum
dimodifikasi memiliki output yang berbeda. Karena ada perbedaan di peletakan
system.out.println nya dan pada program yang sudah di modifikasi ditambahkan
catch Array Index out of bounds exception yang berisi sebuah kata yang akan
menjadi keluaran nantinya

➢ Latihan 5
Program

Program yang sudah di modifikasi

Output
Jawab:
Program

Output
Soal Laporan Resmi
1. Apa perbedaan antara keyword throw dengan throws!
Jawab: Throws digunakan untuk mendeklarasikan exception yang biasanya sama
seperti digunakan saat penggunaan blok try-catch. Keyword throw ini biasanya
diikuti dengan instance dari sebuah Class yang merupakan turunan dari Class
Exception (superclass for exception).
Sedangkan, throw digunakan untuk secara eksplisit melempar sebuah exception.
Deklarasi menggunakan throws dapat digunakan baik untuk single exception
maupun multiple exception. Deklarasi ini dapat dituliskan menggunakan tanda
koma (,). Dengan penggunaan throws ini secara tidak langsung menginformasikan
bahwa dari bagian fungsi yang dideklarasikan ada kemungkinan akan
menghasilkan error berupa salah satu exception yang telah dideklarasikan.
2. Jelaskan fungsi pembuatan subclass eksepsi sendiri!
Jawab: Dengan membuat class eksepsi sendiri berarti kita membuat tipe data baru
dimana tipe data baru ini dapat kita gunakan untuk melempar suatu eksepsi untuk
kemudian ditangkap pada bagian lain dari program. Dengan menggunakan tipe
data eksepsi yang berbeda-beda, program dapat mengetahui apa kira-kira penyebab
eksepsi yang bersangkutan sehingga dapat bertindak sebagimana mestinya.
ANALISA

Pada praktikum dasar pemograman percobaan 6 ini mahasiswa menganalisa sebuah program
dengan eksepsi (exception) yang dimana merupakan suatu mekanisme yang digunakan untuk
mendeskripsikan apa yang harus dilakukan jika ada suatu kondisi yang tidak diinginkan
terjadi.

Pada soal pendahuluan 1, mahasiswa diminta untuk menjelaskan perbedaan antara error dan
eksepsi. Seperti yang tertera pada soal bahwa jika terjadi error hal yang mungkin dilakukan
yaitu dengan menghentikan program, tetapi jika terdapat eksepsi hal yang mungkin dilakukan
yaitu dengan menggunakan blok try-catch atau dengan cara melempar eksepsi kembali kepada
caller

Pada soal pendahuluan 2, mahasiswa diminta untuk memahami dan menganalisa apakah try
dapat mengandung except dan finally sekaligus atau tidak, dan diminta untuk memberikan
contoh program nya

Pada percobaan 1,2,3,&4. Mahasiswa diminta untuk membandingkan program yang sudah
dimodifikasi dan yang belum di modifikasi, pada program yang sudah dimodifikasi terdapat
penambahan blok try yang berfungsi sebagai kode yang memungkinkan terjadinya
pelemparan eksepsi tertentu

Pada percobaan 5, mahasiswa diminta untuk mencoba memasukkan program yang tersedia,
tetapi pada program yang tersedia masih terdapat kesalahan, seperti tanda (* *) yang
seharusnya (“ “) dan System.out.println(ai getMessage() ) , seharusnya tidak ditambahkan
kalimat seperti itu. Pada percobaan kali ini terdapat 2 blok yaitu blok try dan blok finally

Pada percobaan 6, mahasiswa diminta untuk mencoba program yang sudah disediakan. Pada
percobaan kali ini kita mencoba untuk melempar excepsi dengan menggunakan
NullPointerException yang berfungsi untuk mengakses member ketika refrence-nya masih
menunjuk ke null.

KESIMPULAN

Pada percobaan ke 6 ini dapat disimpulkan bahwa Exception mendefinisikan kondisi error
yang ringan yang dijumpai oleh program. Sedangkan untuk kondisi error yang berat
didefinisikan dengan Error. Ketika dalam program terjadi eksepsi, method yang menemukan
error tersebut bisa menghandle sendiri atau melemparkannya ("throw") kembali kepada
pemanggilnya untuk memberi sinyal bahwa telah terjadi suatu masalah. Mahasiswa juga dapat
memahami cara penanganan dan penangkapan eksepsi dan melontarkan kembali eksepsi serta
menjelaskan tentang klausa throw maupun throws

Anda mungkin juga menyukai