EXCEPTION
Ke - 6
Widad Alfiyah Z
1 D4 Telekomunikasi A
2220600013
11 April 2021
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
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.
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.
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
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");
}
}
}
}
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 ---
AWTError
Throwable ArithmeticException
RuntimeException ---
NullPointerException
Exception
IndexOutOfBoundsException
EOFException
IOException
FileNotFoundException
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.
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
Jawab:
Program
Jawab:
Program
Jawab:
Program
➢ Latihan 4
Program
Output
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
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