PRAKTIKUM PEMROGRAMAN OBJEK DENGAN JAVA MODUL KE-5 EXCEPTION HANDLING

dokumen-dokumen yang mirip
PRAKTIKUM 17 MENANGANI EXCEPTION

Exception Handling. Oleh : Agus Priyanto, M.Kom

Percobaan 6 Exception

Variabel tersebut seharusnya bisa dideklarasikan didalam try block dan block catch

Waktu Sisa : 0:43:4. Sukses. Kesalahan pada URL. File tidak lengkap. Kesalahan umum. Mengerjakan finally. Diluar block

PERCOBAAN 6 EXCEPTION

1. Apa yang harus dilakukan oleh programmer untuk menangani user-defined exception? Menuliskan exception sebagai start method

Sukses. Kesalahan pada URL. File tidak lengkap. Kesalahan umum

PRAKTIKUM 6 EXCEPTION

EXCEPTION. 2. Pada kondisi bagaimana klausa finally tidak akan dieksekusi? Kode didalam block try memiliki statement return

Pemrograman Berorientasi Obyek. Exception Handling. Politeknik Elektronika Negeri Surabaya

Tidak ada satupun dari pilihan di atas yang benar karena checked exception tidak bisa ditulis

PEMROGRAMAN JAVA : EXCEPTION

Sesi 8. Event Handling & Exception Handling. Tujuan Intruksional

Exception Handling. Topik

Tujuan Intruksional. Mampu menjelaskan tentang event handling Mampu menjelaskan tentang method Mampu menggunakan event handling Mampu membuat method

A. TUJUAN PEMBELAJARAN 1. Mengetahui cara menangani exception dengan cara melempar exception. 2. Mengetahui cara membuat sendiri class exception.

Pemrograman Berorientasi Object

Pemrograman Berbasis Objek. Exception Handling. Politeknik Elektronika Negeri Surabaya

Exception adalah penanda bahwa kondisi/kejadian yang tidak diinginkan telah terjadi pada program kita. Ada 2 jenis exception (+1 Error):

Pemrograman Lanjut Exception Handling PTIIK

Modul 4 Exception, I/O, dan Operasi File

1.Tujuan. 2. Latar Belakang

Definisi Eksepsi (exception)

IF PEMROGRAMAN LANJUT EXCEPTION. Oleh : Andri Heryandi, M.T.

PERTEMUAN III OBJEK DAN CLASS TUJUAN PRAKTIKUM

Topik. Penanganan Eksepsi. Menangkap Eksepsi. Catch Secara bertingkat. Melontarkan Eksepsi. Melontarkan kembali Eksepsi.

PERTEMUAN 3 OBJEK DAN CLASS

PRAKTIKUM I EXCEPTION HANDLING

IKG2I4 / Software Project I

4/11/2013. Topik. Exceptions dan Assertions Pengenalan Pemrograman 2. Topik. Topik EXCEPTIONS. Class Error dan Exception

03/04/2018. Pemrograman Berorientasi Object

BAB Tujuan. 2.2 Apa itu Exception? Pendahuluan Error dan Exception Classes

Exception Handling. Prepared by Viska Mutiawani. 1

Bahasa Pemrograman 2.

Praktikum 9 Exception Handling

Pemrograman Berorientasi. Exception Handling

PEMOGRAMAN JAVA. Yoannita. Tipe Data (ii) : Array Exception Handling

SEKOLAH TINGGI MANAJEMEN INFORMATIKA & KOMPUTER JAKARTA STI&K SATUAN ACARA PERKULIAHAN

public class Test { int i = 6; int j = 3; System.out.println(i/j); } Output :

PEMROGRAMAN BERORIENTASI OBJEK

Exception Handling and Multithreading

MODUL 9 EXCEPTION HANDLING

2. Pilih instruksi yang dapat digunakan dalam method actionperformed untuk membedakan antara tombol buttonone dan buttontwo.

Exception. Oleh: Mike Yuliana PENS-ITS

Penjebakan Eksepsi. Nur hasanah, M.Cs

Modul Praktikum Pemrograman

MODUL 7 - EXCEPTION HANDLING

CHAPTER #5 DEBUGGING AND EXCEPTION HANDLING

Pemograman Java. Yoannita, S.Kom. Argumen Command Line Exception Handling Package

SUMBER BELAJAR PENUNJANG PLPG

BAB 5 Mendapatkan Input dari Keyboard

BAHASA PEMROGRAMAN JAVA

Praktikum Exception Handling

KOTLIN, SIAPA SUKA. Dasar. P. Tamami BPPKAD Kab. Brebes

Exception Handling Lanjutan

Penanganan Kesalahan

EXCEPTION HANDLING. 1. Mampu menangani eksepsi 2. Mengetahui dan memahami tentang multithreading 3. Dapat membuat program tentang exception handling

BAB 5 Mendapatkan Input dari Keyboard

PEMROGRAMAN JAVA. Yoannita, S.Kom. Input Kondisi (IF-ELSE, SWITCH)

Program pendek dan simple = mudah dihandle. Program besar, banyak dan kompleks = tidak

TPI4202 e-tp.ub.ac.id. Lecture 4 Mas ud Effendi

Overriding. Subclass yang berusaha memodifikasi tingkah laku yang diwarisi dari superclass. Tujuan: subclass memiliki tingkah laku yang lebih

BAB II VARIABEL DAN TIPE DATA

2 TIPE DATA DAN VARIABEL

PEMROGRAMAN JAVA : VARIABEL DAN TIPE DATA

Pertemuan 2 Struktur Kontrol Percabangan

Dasar Pemrograman Java

BAB Argument Command-Line dan System Properties

Cara Membaca File Text di JAVA

EXCEPTION HANDLING. Bug : kesalahan yang merupakan kelemahan dari perancangan atau implementasi

Topik. Stream I/O Cara menggunakan Stream Hierarchy Java I/O Membaca File Menulis File Menghapus File Cara membaca isi Direktori dalam file

PERTEMUAN 2 ARRAY, PERCABANGAN, DAN PERULANGAN

STRUKTUR PEMROGRAMAN PYTHON

PEMAHAMAN DASAR DASAR JAVA

Modul Praktikum 4 Pemograman Berorientasi Objek

PRAKTIKUM 8 FILE INPUT OUTPUT

BAB 2 INPUT DARI KEYBOARD

Algoritma Pemrograman 1

OPERASI FILE & EXCEPTION HANDLING. Herman Tolle

PRAKTIKUM 7 DASAR INPUT OUTPUT

1. Manakah jawaban yang benar,pada saat Anda mengcompile dan menjalankan class berikut ini:

GARIS-GARIS BESAR PROGRAM PENGAJARAN (GBPP)

GARIS-GARIS BESAR PROGRAM PENGAJARAN (GBPP)

SATUAN ACARA PERKULIAHAN (SAP) Dosen menerangkan materi kuliah. Mahasiswa duduk berkelompok dan saling membantu memahami penjelasan dosen

PEMROGRAMAN JAVA. Petunjuk Penulisan Program Token Aturan Penamaan Identifier Lingkungan /Scope dari variabel Tipe Data (i) Yoannita

1. Keyword mana yang memiliki fungsi sama dengan keyword this dan menyediakan reference ke atribut turunan dari objek? super

Satuan Acara Perkuliahan (SAP) UNIVERSITAS GUNADARMA

Obyektif : KONTROL ALUR PROGRAM

JAVA BASIC PROGRAMMING Joobshet

Pemrograman Berorientasi Obyek (IT251) Ramos Somya, S.Kom., M.Cs.

AP2B Dini Triasanti STRUKTUR PEMROGRAMAN PYTHON

Modul Tutorial C# 2 DASAR PEMROGRAMAN C# : STATEMENT DAN OPERATOR ENRICO BUDIANTO MICROSOFT INNOVATION CENTER UNIVERSITAS INDONESIA

FAKULTAS TEKNIK UNIVERSITAS NEGERI YOGYAKARTA LAB SHEET PEMROGRAMAN 2

Overriding, Overloading, Polymorphism. Pertemuan 10 Pemrograman Berbasis Obyek Dr. Rodiah

E-Book PEMROGRAMAN BERORIENTASI OBJEK. Disusun Oleh: Arfian Hidayat, S.Kom

Apa yang menjadi output potongan kode diatas? Error karena tidak ada String yang di-passing kedalam konstruktor Bapak

IT234 ALGORITMA DAN STRUKTUR DATA FUNGSI

Modul Praktikum 3 Pemograman Berorientasi Objek

Pengenalan Program Java

Transkripsi:

PRAKTIKUM PEMROGRAMAN OBJEK DENGAN JAVA MODUL KE-5 EXCEPTION HANDLING LABORATORIUM PEMROGRAMAN PROGRAM STUDI TEKNIK INFORMATIKA FAKULTAS TEKNIK UNIVERSITAS MUHAMMADIYAH MALANG 2011/2012

1. TUJUAN Mahasiswa mampu memahami konsep Exception Handling dalam suatu program Mahasiswa mampu memahami perbedaan antara kode program java yang memanfaatkan Exception Handling dan yang tidak memanfatkan. Mahasiswa mampu mengimplementasikan kata kunci try, catch, dan finally di dalam menangani exception Mahasiswa mampu memahami dan mengerti tentang hierarki dari class Exception yang ada di dalam bahasa pemrograman java. 2. ALAT YANG DIGUNAKAN Compiler Java (JDK), JRE Editor Java (Gel, Eclipse, Jcreator, dll) 3. DASAR TEORI Apakah Exception Itu? Kata exception merupakan bentuk pendek dari exception event. Definisi: Exception adalah event, yang terjadi ketika program dieksekusi, yang ngakibatkan terganggunya alur program secara normal Ketika error terjadi di suatu method, maka method tersebut akan membuat object yang kemudian dikirim ke runtime system. Object ini, yang disebut sebagai exception object, mengandung informasi tentang error yang terjadi, termasuk tipe dan kondisi program pada saat error terjadi. Proses pembuatan exception object dan kemudian mengirimnya ke runtime system ini disebut sebagai throwing an exception (melemparkan exception). Setelah method melemparkan exception, runtime system akan berusaha untuk mencari solusi untuk menangani masalah yang ada. Solusi yang ada bisa jadi lebih dari satu, oleh karena itu runtime system akan memilih berdasarkan suatu urutan yang berdasar pada method tempat terjadinya error dan atau method lain yang memanggil method tersebut. Urutan ini disebut call stack. (lihat gambar) Runtime system mencari method yang memiliki blok untuk menangani error yang terjadi berdasarkan call stack. Pencarian dimulai dari tempat terjadinya error

kemudian dirunut berdasarkan call stack secara reverse order. Jika ditemukan blok untuk menangani error yang bersangkutan, maka system akan menyerahkan exception ke handler. Penyerahan exception ini disebut sebagai catch the exception (menangkap exception). Jika system tidak menemukan handler yang sesuai di call stack, maka runtime system akan menghentikan jalannya program. (lihat gambar) Untuk memahami bagaimana exception handling bekerja di java, anda harus memahami kategori-kategori exception: -Checked exceptions: merupakan exception yang disebabkan oleh kesalahan pemakai program atau hal lain yang dapat diprediksi oleh pemrogram. Contohnya, jika ingin membuka file tapi file tidak ditemukan, maka exception akan muncul. -Runtime exception: ini adalah exception yang muncul dimana kemunculannya tidak bisa dihindari oleh pemrogram. -Errors: Ini sebenarnya bukan exception, namun merupakan masalah yang muncul diluar kendali pemakai dan pemrogram. Error secara umum akan dibiarkan saja, sebab tidak ada yang bisa dilakukan untuk mengatasinya. Sebagai contoh, jika stack overflow muncul, maka error akan muncul. Hierarki Exception: Semua class exception adalaha subclass dari class java.lang.exception. Class Exception sendiri merupakan subclass dari class Throwable. Selain class exception, ada juga class Error yang juga diturunkan dari class Throwable. Normalnya, Error jarang dibuat objectnya pada java. Kondisi ini bisa muncul jika ada masalah parah yang tidak dapat ditangani oleh program java. Contoh: JVM kehabisan memori. Untuk kasus ini program tidak akan dapat menangani error yang terjadi. Class Exception memiliki dua subclass utama: IOException dan RuntimeException.

Method-method di class exception: public String getmessage() mengembalikan detail informasi mengenai exception yang terjadi.informasi ini diinisialisasi oleh constructor milik Throwable public Throwable getcause() menampilkan penyebab dari exception public String tostring() mendapatkan nama exception ditambah informasinya public void printstacktrace() menampilkan hasil tostring() beserta stack trace System.err public StackTraceElement[] getstacktrace() mengembalikan array yang berisi semua elemen di stack trace. Elemen ke 0 mewakili bagian atas call stack, dan elemen akhir array mewakili bagian akhir call stack public Throwable fillinstacktrace() mengisi stack trace dari object Throwable dengan stack trace yang terdeteksi, menambah ke dalam stack trace Menangkap Exception: Method menangkap exception menggunakan kombinasi try dan catch keywords. Kode program yang dapat menimbulkan exception diletakkan di dalam blok try. Sintaks penggunaan try-catch adalah sebagaimana berikut: try //Protected code catch(exceptionname e1) //Blok Catch

Statement catch disertai dengan deklarasi tipe exception yang ingin ditangani. Jika exception terjadi di bagian protected code, maka blok catch akan melakukan pemeriksaan. Jika tipe exceptionnya ada di dalam blok catch, maka exception yang bersangkutan akan ditangani Contoh: Berikut adalah array dua dimensi. Kemudian program akan mengakses elemen ke 3 dari array tersebut, sehingga mengakibatkan exception // File Name : ExcepTest.java import java.io.*; public class ExcepTest public static void main(string args[]) try int a[] = new int[2]; System.out.println("Access element three :" + a[3]); catch(arrayindexoutofboundsexception e) System.out.println("Exception thrown :" + e); System.out.println("Out of the block"); Program diatas akan menghasilkan: Exception thrown :java.lang.arrayindexoutofboundsexception: 3 Out of the block Multiple blok catch: Blok try dapat diikuti oleh banyak blok catch. Sintaks untuk multiple blok catch adalah: try //Protected code catch(exceptiontype1 e1) //Catch block catch(exceptiontype2 e2) //Catch block catch(exceptiontype3 e3) //Catch block Kode di atas menunjukkan tiga blok catch, namun anda dapat memiliki berapapun setelah try. Jika exception terjadi di bagian protected code, maka exception akan dilemparkan, kemudian diperiksa oleh blok catch pertama. Jika tipe exception-nya sesuai, maka akan ditangkap oleh blok pertama ini. Jika tidak, maka akan diperiksa oleh blok catch kedua. Hal ini akan dilanjutkan hingga ada blok catch yang sesuai. Jika tidak ada yang sesuai, maka method akan menghentikan eksekusinya dan melempar exception tadi ke method pemanggilnya sesuai urutan call stack.

Contoh: Berikut adalah penggalan program yang menunjukkan penggunaan multiple try try file = new FileInputStream(fileName); x = (byte) file.read(); catch(ioexception i) i.printstacktrace(); return -1; catch(filenotfoundexception f) //Not valid! f.printstacktrace(); return -1; Keyword throws dan throw Jika method tidak dapat menangani exception, maka method tersebut harus mendeklarasikan jenis exception yang mungkin dilemparkan menggunakan kata throws. Kata throws digunakan pada bagian deklarasi method. Anda dapat melempar exception, atau object exception baru, atau exception yang baru saja ditangkap; dengan menggunakan kata throw. Coba untuk memahami perbedaan throws dan throw. Berikut adalah sebuah method yang melemparkan RemoteException import java.io.*; public class classname public void deposit(double amount) throws RemoteException // Method implementation throw new RemoteException(); //Remainder of class definition Pada suatu method dapt didefinisikan lebih dari satu macam keluaran exception yang dipisahkan dengan tanda koma (,). Sebagai contoh: method berikut kemungkinan melemparkan RemoteException dan InsufficientFundsException: import java.io.*; public class classname public void withdraw(double amount) throws RemoteException, InsufficientFundsException // Method implementation //Remainder of class definition

Keyword finally: Keyword finally digunakan untuk membuat blok yang mengikuti blok try. Blok finally selalu dieksekusi, tidak peduli exception terjadi atau tidak. Menggunakan keyword finally memungkinkan untuk menjalankan langkah akhir ysng harus dijalankan tidak peduli pada apa yang terjadi di bagian protected code. Blok finally berada di bawah catch blok dan memiliki sintaks sebagaimana berikut: try //Protected code catch(exceptiontype1 e1) //Catch block catch(exceptiontype2 e2) //Catch block catch(exceptiontype3 e3) //Catch block finally //The finally block always executes. Contoh: public class ExcepTest public static void main(string args[]) int a[] = new int[2]; try System.out.println("Access element three :" + a[3]); catch(arrayindexoutofboundsexception e) System.out.println("Exception thrown :" + e); finally a[0] = 6; System.out.println("First element value: " +a[0]); System.out.println("The finally statement is executed"); Hasil dari program ini adalah: Exception thrown :java.lang.arrayindexoutofboundsexception: 3 First element value: 6 The finally statement is executed Perhatikan hal berikut ini: 1.Blok catch tidak dapat dibuat tanpa adanya blok try 2.Tidak wajib membuat blok finally bila blok try-catch sudah ada 3.Blok try tidak dapat dibuat tanpa ada blok catch atau blok finally

Keuntungan Menggunakan Exception Keuntungan 1: Memisahkan kode Error-Handling dari kode utama Dengan fasilitas pemisahan kode utama dan kode error handling, memungkinkan bagi kita untuk berkonsentrasi terhadap bagian bagian tersebut. Di pemrograman tradisional, deteksi error, reporting, dan penanganan error menimbulkan kompleksitas program semakin tinggi. Sebagai contoh, perhatikan pseudo code berikut ini: bacafile!!! buka file;!!! dapatkan ukuran file;!!! alokasikan memori sebesar ukuran file;!!! salin isi file ke memori;!!! tutup file;! Program diatas secara sekilas dapat digunakan untuk menyalin file ke memori. Namun ada beberapa hal yang tidak diperhatikan, yakni: - Apa yang terjadi bila file tidak dapat dibuka? - Apa yang terjadi bila ukuran file tidak dapat ditentukan? - Apa yang terjadi bila memori yang dipesan tidak mencukupi? - Apa yang terjadi jika proses penyalinan gagal? - Apa yang terjadi jika file tidak dapat ditutup? Untuk menangani kemungkinan di atas, fungsi bacafile harus dilengkapi dengan kemampuan deteksi error, reporting dan penanganan error. Berikut adalah pengembangan dari fugsi tersebut: errorcodetype bacafile initialize errorcode = 0; buka file; if (fileterbuka) dapatkan ukuran file; if (ukurandidapatkan) alokasi memori sebesar ukuran file; if (alokasiberhasil) salin isi file ke memori; if (salinfile) errorcode = -1; else errorcode = -2; else errorcode = -3; tutup file; if (filetidaktertutup && errorcode == 0) errorcode = -4; else errorcode = errorcode and -4;

else errorcode = -5; return errorcode; Jika dilihat kembali, pseuso code di atas terlalu didominasi oleh deteksi error, reporting dan penanganan error; sedangkan lima bagian utama dari fungsi jadi sulit dikenali. Lebih buruk lagi, logical flow dari fungsi juga tidak dapat dikenali, sehingga menyusahkan untuk memastikan apakah program dapat mengatasi semua kejadian dengan benar: Apakah file akan ditutup bila fungsi gagal untuk mengalokasikan memori dengan benar? Dan menjadi lebih sulit lagi jika kita ingin mengubah fungsi tiga bulan kemudian. Banyak programmer yang mengabaikan saja masalah ini, dan baru bertindak jika program crash. Exception memungkinkan kita untuk menulis alur logika program utama dan menangani kasus khusus di tempat lain. Jika bacafile menggunakan exception, maka code fungsi akan seperti ini. bacafile try buka file;!!! dapatkan ukuran file;!!! alokasikan memori sebesar ukuran file;!!! salin isi file ke memori;!!! tutup file; catch (fileopenfailed) lakukansesuatu; catch (sizedeterminationfailed) lakukansesuatu; catch (memoryallocationfailed) lakukansesuatu; catch (readfailed) lakukansesuatu; catch (fileclosefailed) lakukansesuatu; Dengan adanya exception, code menjadi terorganisasi, sehingga kerja kita menjadi semakin efisien. Keuntungan 2: Propagasi errors berdasarkan Call Stack Keuntungan kedua exception adalah adanya mekanisme propagasi laporan error melalui method-method di call stack. Misalkan bacafile merupakan method ke 4 yang dipanggil sebagai secara berurutan sampai main program: method1

memanggil method2, method2 memanggil method3, dan method3 memanggil bacafile. method1 call method2; method2 call method3; method3 call bacafile; Misalkan method1 merupakan satu-satunya method yang dapat menangani error di bacafile(). Pada sistem notifikasi error secara tradisional, maka bacafile, method3 dan method2 hars mengirimkan return value berupa kode error. Hasilnya adalah seperti kode di bawah ini: method1 errorcodetype error; error = call method2; if (error) doerrorprocessing; else proceed; errorcodetype method2 errorcodetype error; error = call method3; if (error) return error; else proceed; errorcodetype method3 errorcodetype error; error = call readfile; if (error) return error; else proceed;

Dengan kasus yang sama, Java runtime environment bisa mencari secara terbalik ke call stack untuk mencari exception handling yang sesuai. Sehingga, kode di atas akan menjadi: method1 try call method2; catch (exception e) doerrorprocessing; method2 throws exception call method3; method3 throws exception call readfile; Namun, sebagaimana diperlihatkan pada kode di atas, untuk keperluan ini digunakan keywords throws. Keuntungan 3: Pengelompokan dan Pembedaan Tipe Error Karena semua exception yang dilempar adalah object, pengelompokan dan kategorisasi exception dapat dilakukan menurut hierarki class. Contoh pengelompokan berdasar hierarki class tersebut dapat dilihat di java.io -- IOException dan turunannya. IOException adalah class exception yang paling umum untuk menangani error input dan output. Turunan class ini diperuntukkan bagi jenis error yang lebih spesifik. Sebagai contoh, FileNotFoundException menandakan bahwa file tidak ditemukan di disk. Di method dapat ditulis suatu handler untuk menangani masalah yang sangat spesifik. FileNotFoundException tidak memiliki turunan, sehingga memang peruntukannya sangat spesifik. catch (FileNotFoundException e)... Method dapat menangkap exception berdasarkan kelompoknya atau berdasarkan kriteria yang lebih umum dengan menspesifikansikan tipe class exception yang lebih umum. Sebagai contoh, untuk menangkap semua jenis masalah input dan output gunakan kode berikut ini: catch (IOException e)... Handler ini akan menangkap semua exception bertipe I/O, termasuk FileNotFoundException, EOFException dan lainnya. Bahkan kita dapat menulis kode untuk menangkap semua jenis exception, sebagaimana berikut ini: catch (Exception e)

... 4. PROSEDUR PELAKSANAAN utorial. Konsep Exception Handling Implementasi kata kunci try-catch-finally Perbedaan method yang menggunakan Exception Handling dan yang tidak Implementasi beberapa turunan dari class Exception yang terdapat di dalam bahas pemrograman Java Mahasiswa mengerjakan soal-soal latihan berdasarkan topik-topik yang ada di dalam tutorial. Mahasiswa mengerjakan soal tugas praktikum. Mahasiswa mendemokan tugas praktikum ke asisten. 5. LAB: EKSPERIMEN DENGAN EXCEPTION HANDLING Instruksi: Jawablah pertanyaan-pertanyaan berikut selama sesi laboratorium. Jika anda tidak dapat menyelesaikan semua pertanyaan selama sesi praktikum. Pesiapan: Sebelum mengerjakan semua pertanyaan, anda harus: 1. Buat direktori untuk praktikum modul ini 2. Sesuaikan environment pemrograman anda untuk modul ini 3. Copy file-file berikut ini di direktori yang telan anda buat Contoh1.java Contoh2.java Contoh3.java Contoh4.java 1. Contoh sederhana: Bagian ini mencoba contoh sederhana exception handling. 1. Buka Contoh1.java dengan editor 2. Compile dan eksekusi Contoh1 3. Apa output dari aplikasi yang dieksekusi? 4. Ubah nilai denominator dengan 0 5. Re-compile dan re-execute Contoh1 6. Apa error yang ditampilkan ketika mengeksekusi aplikasi ini?

7. Mengapa error ini muncul pada saat runtime? (bukan pada saat compilasi) _ 8. Tambahkan statemen try-catch. Letakkan statemen yang memunculkan exception di dalam blok try dan biarkan blok catch kosong. (Hint: anda harus dapat mengenali jenis exception yang muncul dan dimana letaknya dari pesan error yang muncul) 9. Re-compile Contoh1 10. Error apa yang muncul, dan apa penyebabnya? 11. Buka kembali file Contoh1 12. Tambahkan statemen System.out.println("Divide by 0."); ke catch blok 13. Re-compile dan re-eksekusi Contoh1 14. Apa output yang dihasilkan? 15. Panggil method printstacktrace() dari object ArithmeticException pada bagian akhir blok catch 16. Re-compile dan re-eksekusi Contoh1 17. Apa output yang dihasilkan? 18. Program berjalan dengan normal atau tidak? 2. Contoh yang lebih kompleks: Kegiatan lab bagian ini mencoba contoh exception handling di dalam dan di luar statemen blok 1. Buka Contoh2.java dengan editor 2. Compile Contoh2 3. Apa error yang ditampilkan? _

4. Inisialisasi nilai i di dalam blok try dengan nilai 0 (yang letaknya sebelum for loop). 5. Compile Contoh2 6. Apa error yang ditampilkan? _ 7. Adalah tidak mungkin untuk menggunakan i tanpa inisialisasi. Namun, apa penyebab error ini? (Hint: Pikirkan tentang statement blok) _ 8. Pindahkan inisialisasi nilai i sebelum blok try. 9. Compile dan execute Contoh2 10. Apa output yang dihasilkan? 11. Mengapa tidak semua proses pembagian dapat dilakukan (Hanya satu pembagian saja yang ditampilkan)? 12. Perbaiki Contoh2 sehingga program dapat dieksekusi dengan benar. (Hint: Pindah blok try-catch di dalam block for.) Perubahan apa yang anda lakukan? 3. Pemakaian Exception Handling yang tidak tepat: Kegiatan lab bagian ini mencoba contoh penggunaan exception handling yang tidak tepat dan bagaimana memperbaikinya. 1. Compile dan eksekusi Contoh3 dan pastikan bahwa keluarannya diakhiri oleh kata Selesai 2. Ubah Contoh3 sehingga hanya menggunakan loops saja dan tidak menggunakan try-catch. Apa yang anda ubah?

4. Contok exception lainnya: Bagian ini akan memberikan contoh penggunaan exception jenis lainnya, dimana exception muncul dan bagaimana digunakan. 1. Apa saja yang bisa dilakukan oleh object StringTokenizer? 2. Perhatikan constructor StringTokenizer yang memiliki tiga parameter. Apa fungsi dari tiga parameter tersebut? 3. Compile Contoh4.java 4. Execute Contoh4 sebagaimana berikut: java Contoh4 5.3+9.2 5. Apa output yang dihasilkan? 6. Execute Contoh4 sebagaimana berikut: java Contoh4 5.3+ 7. Apa output yang dihasilkan? 8. Exception apa yang dilempar dan mengapa? 9. Execute Contoh4 sebagaimana berikut: java Contoh4 5.3+a 10. Apa output yang dihasilkan? 11. Exception apa yang dilempar dan mengapa? 6. TUGAS SETELAH SESI LABORATORIUM 1. Ubah Contoh4.java sehingga mendukung proses penambahan (+), pengurangan (-), perkalian (*), dan pembagian (/). 2. Ubah Contoh4.java sehingga semua input argumen dari command line bisa

dieksekusi (bukan hanya args[0] namun bisa juga args[1], args[2] dan seterusnya). Program yang sudah diubah harus dapat digunakan untuk menangani tipe expresi input yang berbeda. Sebagai contoh, program harus dapat mengeksekusi program sebagaimana berikut: java Contoh4 5.0+4.1 3.2*9.1 3. Ubah Contoh4.java sehingga dapat menunjukkan operand mana yang bukan angka. (Hint: Gunakan try-catch blok)