laporan vi.docx

46
LAPORAN 6 EXCEPTION HANDLING Disusun untuk Memenuhi Matakuliah Praktikum Pemrograman Berorientasi Objek Yang Dibimbing oleh Bapak Heru Wahyu Herwanto, S.T., M.Kom Asisten Praktikum : M. Angga Gumilang Jevri T. Ardiansah Oleh : GILANG LOVIANINDRA CIPTA 130533608285 S1 PTI 2013 offering A UNIVERSITAS NEGERI MALANG FAKULTAS TEKNIK

Upload: gilang-lovianindra-cipta-ii

Post on 26-Dec-2015

119 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: LAPORAN VI.docx

LAPORAN 6EXCEPTION HANDLING

Disusun untuk Memenuhi Matakuliah Praktikum Pemrograman Berorientasi Objek

Yang Dibimbing oleh Bapak Heru Wahyu Herwanto, S.T., M.Kom

Asisten Praktikum :

M. Angga Gumilang

Jevri T. Ardiansah

Oleh :

GILANG LOVIANINDRA CIPTA

130533608285

S1 PTI 2013 offering A

UNIVERSITAS NEGERI MALANG

FAKULTAS TEKNIK

JURUSAN TEKNIK ELEKTRO

S1 PENDIDIKAN TEKNIK INFORMATIKA

November, 2014

Page 2: LAPORAN VI.docx

Laporan VI

Exception Handling

A. Tujuan

1. Mahasiswa mengetahui penanganan kesalahan program dengan exception

handling.

2. Mahasiswa mampu menerapkan exception handling.

3. Mahasiswa mampu membedakan penerapan jenis exception handling.

4. Mahasiswa mampu membuat class exception sendiri.

5. Mahasiswa mampu melakukan input data melalui keyboard.

B. Dasar Teori

1. Exception Handling

Exception adalah suatu keadaan yang menyebabkan program hang atau keluar

dari alur normal pada saat program dijalankan. Exception handling merupakan

mekanisme untuk menangkap bug atau kesalahan pada saat program sedang

berjalan.

2. Keyword pada Exception Handling

a. Try

Blok try digunakan untuk menempatkan kode-kode program Java yang

memungkinkan terjadinya exception.

b. Catch

Blok catch digunakan untuk menangkap kesalahan yang terjadi pada

blok try.

c. Finally

Kode program pada blok finally akan selalu dijalankan, tidak peduli

apakah terjadi eksepsi atau tidak.

d. Throw

Keyword throw digunakan untuk melempar exception yang terjadi.

e. Throws

Keyword throws digunakan dalam suatu method atau kelas yang

mungkin menghasilkan suatu kesalahan sehingga perlu ditangkap errornya.

3. Jenis Exception Handling :

Page 3: LAPORAN VI.docx

Try Catch

Multiple Catch

Try-Catch-Finally

Kesalahan dalam sebuah program sering kali muncul, meskipun program

tersebut dibuat oleh programmer berkemampuan tinggi. Untuk menghindari

pemborosan waktu pada proses pencarian kesalahan, Java menyediakan mekanisme

penanganan exception. Exception adalah singkatan dari Exceptional Events. Menurut

definisi umum, exception adalah kondisi abnormal yang terjadi saat runtime. Runtime

error atau kesalahan-kesalahan yang terjadi pada saat program berjalan diwujudkan

dan exception. Exception dapat dibangkitkan secara otomatis oleh sistem Java

runtime maupun sengaja kita buat melalui pernyataan tertentu untuk tujuan tertentu.

Pada dasarnya, Exception merupakan subkelas dari kelas java.lang.Throwable.

Karena Exception adalah sebuah kelas maka hakikatnya ketika program berjalan dan

muncul sebuah bug atau kesalahan maka bug tersebut dapat dianggap sebuah object. 

Sehingga ketika object ini di tampilkan di layar maka java akan secara otomatis

memanggil method toString yang terdapat dalam object bertipe Exception ini. Java

memberikan akses kepada developer untuk mengambil object bug yang terjadi ini

dengan mekanisme yang dikenal Exception Handling. Exception handling merupakan

fasilitas di java yang memberikan flexibilitas kepada developer untuk menangkap bug

atau kesalahan yang terjadi ketika program berjalan

Perhatikan kode program berikut:

public class DivByZero {

public static void main(String args[]) {

int a = 5, b = 0, c;

c = a/b;

System.out.println("c = " + c);

}

}

Kode program di atas, secara sintaks tidak salah. Namun ada kesalahan yang fatal

yaitu: ada pembagian dengan 0. Yaitu a = 5 dibagi b = 0. Kesalahan seperti ini sering

terjadi karena memang tidak terlihat bila kita tidak cermat. Apabila kita kompilasi

kode program tersebut, maka kompilasi akan berlangsung sukses. Namun bila kita

Page 4: LAPORAN VI.docx

jalankan, kita tidak akan mendapatkan hasil tetapi program akan menampilkan pesan

terjadinya exception atau kondisi tidak normal dan program berhenti.

Beberapa tipe exception yang umum antara lain:

ArithmeticException. Exception karena kesalahan yang ada hubungannya

dengan perhitungan, misalnya: pembagian dengan 0.

ArrayIndexOutOfBoundException. Exception karena membaca indeks

array diluar batas yang ditetapkan.

NullPointerException. Kesalahan karena pointer yang tidak berisi (null)

Dan lain-lain

Try digunakan untuk membuat blok yang berisi pernyataan-pernyataan yang mungkin

menimbulkan exception. Apabila dalam proses eksekusi pernyataan-pernyataan pada blok

tersebut terjadi exception, maka exception akan dilempar ke bagian blok penangkap

exception yang dibuat dengan kata kunci catch. Perhatikan contoh berikut ini.

Contoh 8.15. Exception dengan try-catch.

public class DivByZero {

public static void main(String args[]) {

int a = 5, b = 0, c;

try {

c = a/b;

} catch (ArithmeticException exc) {

//Reaksi jika terjadi exception

System.out.println(exc);

}

System.out.println("Setelah exception");

}

}

Kode program pada contoh 8.15 ini adalah pengembangan dari kode program

sebelumnya. Pernyataan c = a/b merupakan pernyataan yang kita uji apakah mengandung

exception atau tidak. Jika terjadi exception maka exception akan dilempar ke bagian

catch. Exception yang kita periksa adalah ArithmeticException. Reaksi yang muncul jika

terjadi exception adalah menjalankan pernyataan System.out.println(exc);. Dengan

Page 5: LAPORAN VI.docx

mekanisme seperti ini maka program tidak akan dipaksa berhenti, dan perintah setelah

blok try-catch tetap bisa dijalankan. Gambar 8.9. menunjukkan hasil eksekusi kode

program di atas. Bandingkan dengan gambar 8.8.

Umumnya exception pada satu masalah tidak hanya satu. Pada contoh 8.16 berikut ini,

kita menggunakan beberapa

tipe exception untuk memeriksa kemungkinan terjadi exception. Ketik kode program

berikut kemudian jalankan dan amati apa yang terjadi.

Contoh 8.16. Exception dengan try-catch.

class BanyakEksepsi {

public static void test(int a, int b) {

try {

int c = a / b;

System.out.println("Hasil bagi: " + c);

int[] Arr = {1,2,3,4,5}; // array dengan 5 elemen

Arr[10] = 11; // mengakses indeks ke-10

} catch (ArithmeticException ae) {

System.out.println("Terdapat pembagian dengan 0");

System.out.println(ae);

} catch (ArrayIndexOutOfBoundsException oobe) {

System.out.println("Indeks di luar rentang");

System.out.println(oobe);

}

}

public static void main(String[] args) {

test(4, 0); // menimbulkan ArithmeticException

System.out.println();

test(12, 4); // menimbulkan

ArrayIndexOutOfBoundsException

Page 6: LAPORAN VI.docx

}

}

Disamping menangkap exception, Java juga mengijinkan seorang user untuk melempar

(throw) sebuah exception. Perhatikan contoh 8.17 berikut ini.

Contoh 8.17. Exception dengan try-catch dan throw.

class ThrowDemo {

public static void main(String args[]){

String input = "Salah input";

try {

if (input.equals("Salah input")) {

throw new

RuntimeException("Demonstrasi Throw");

} else {

System.out.println(input);

}

System.out.println("Setelah throw");

} catch (RuntimeException e) {

System.out.println("Exception

ditangkap di sini.");

System.out.println(e);

}

}

}

Perhatikan pada pernyataan yang dimulai dari perintah if. Kalau diartikan, pernyataan

tersebut adalah: jika nilai variabel input sama dengan "Salah input", maka lemparkan

exception dengan menampilkan "Demonstrasi Throw". Output dari kode program ini

akan tampak seperti pada gambar 8.10.

Page 7: LAPORAN VI.docx

Blok finally mengandung kode penanganan setelah penggunaan try dan catch. Blok kode

ini selalu tereksekusi apapun yang terjadi pada blok try. Blok kode tersebut juga akan

menghasilkan nilai true meskipun return, continue, ataupun break tereksekusi. Perhatikan

kode program berikut.

Contoh 8.18. Exception dengan try-catch-finally.

class DemoFinally {

private static int i = 0;

public static void main(String[] args) {

while (true) {

try {

System.out.print("Pada saat i = " + i + ": ");

if (i++ == 0) {

throw new Exception(); // melempar exception

}

System.out.println("Tidak terjadi exception");

} catch (Exception e) {

System.out.println("Terdapat exception");

} finally {

System.out.println("Pernyataan dalam blok

finally\n");

if (i == 2) {

break; // pada saat i==2, pengulangan akan

berhenti

}

}

}

}

}

Bila kode program dijalankan maka akan tampak seperti pada gambar 8.11. Perhatikan,

bahwa apa yang ada pada blok kode finally akan selalu dijalankan.

Page 8: LAPORAN VI.docx

Ada 5 keyword penting dalam java dalam hal exception handling :

1. try

Keyword ini biasanya digunakan dalam suatu block program. keyword ini digunakan

untuk mencoba menjalankan block program kemudian mengenai dimana munculnya

kesalahan yang ingin diproses. Keyword ini juga harus dipasangkan dengan keyword

catch atau keyword finally yang akan dibahas pada point kedua dan ketiga.

Contoh penggunaan :

public class A

{

    public static void main(String[] args) {

        try

        {

            int a = 1 / 0; // berpotensi untuk menimbulkan kesalahan

yaitu

            // pembagian dengan bilangan 0

            System.out.println("perintah selanjutnya");

        }

        catch (Exception kesalahan)

        {

            System.err.println(kesalahan);

        }

    }

}

java.lang.ArithmeticException: / by zero

Perhatikan contoh diatas, ada beberapa hal penting yang perlu dilihat. Pertama, block

program yag diyakini menimbulkan kesalahan maka ada di dalam block try and

Page 9: LAPORAN VI.docx

catch.Kedua, kesalahan yang muncul akan dianggap sebagai object dan ditangkap

catch kemudian di assign ke variable kesalahan dengan tipe Exception. Ketiga,

perintah setelah munculnya kesalahan pada block try tidak akan dieksekusi.

2. catch

Jika anda sudah melihat contoh try maka secara tidak langsung anda sudah memahami

kegunaan dari keyword ini. Dalam java, keyword catch harus dipasangkan dengan try.

Kegunaan keyword ini adalah menangkap kesalahan atau bug yang terjadi dalam

block try. Setelah menangkap kesalahan yang terjadi maka developer dapat

melakukan hal apapun pada block catch sesuai keinginan developer. Contoh

Program :

catch(Exception kesalahan)

{

    System.out.println(“mohon maaf, terdapat kesalahan pada

program”);

    //lakukan hal lainnya disini

}

Keyword catch juga dapat diletakan berulang-ulang sesuai dengan kebutuhan.

Contoh :

public class A

{

    public static void main(String[] args) {

        try

        {

            int a = 1/0;  //berpotensi untuk menimbulkan kesalahan

yaitu pembagian dengan bilangan 0

            System.out.println("perintah selanjutnya");

        }

        catch(NullPointerException e)

        {

        }

        catch(ArrayIndexOutOfBoundsException e)

        {

        }

        catch(Exception e)

Page 10: LAPORAN VI.docx

        {

        }

    }

}

3. finally

Keyword ini merupakan keyword yang menunjukan bahwa block program tersebut

akan selalu dieksekusi meskipun adanya kesalahan yang muncul atau pun tidak ada.

Contoh implementasinya pada program :

public class A

{

    public static void main(String[] args) {

        try

        {

            //int a = 1/0;

        }

        finally

        {

            System.out.println("terima kasih telah menjalankan

program");

        }

    }

}

Output Program diatas:

terima kasih telah menjalankan program

Jika saya lakukan modifikasi program diatas menjadi  :

public class A

{

    public static void main(String[] args) {

        try

        {

            int a = 1/0;

        }

        catch (Exception e)

Page 11: LAPORAN VI.docx

        {

            System.out.println(“ada kesalahan yang muncul”);

        }

        finally

        {

            System.out.println(“terima kasih telah menjalankan

program”);

        }

    }

}

Output Program :

ada kesalahan yang muncul

terima kasih telah menjalankan program

Perhatikan kedua contoh diatas, block finally akan selalu dieksekusi meskipun adanya

kesalahan atau tidak pada block try. Berbeda dengan keyword catch keyword finally

hanya dapat diletakan 1 kali setelah keyword try.

4. throw

Keyword ini digunakan untuk melemparkan suatu bug yang dibuat secara manual.

Contoh program :

public class A

{

    public static void main(String[] args) {

        try

        {

            throw new Exception("kesalahan terjadi");

        }

        catch(Exception e)

        {

            System.out.println(e);

        }

    }

}

Page 12: LAPORAN VI.docx

java.lang.Exception: kesalahan terjadi

Seperti yang anda lihat pada program diatas, pada keyword throw new

Exception(“kesalahan terjadi”); akan melempar object bertipe exception yang

merupakan subclass dari class Exception sehingga akan dianggap sebagai suatu

kesalahan yang harus ditangkap oleh keyword catch.

Perhatikan contoh berikut ini :

public class A

{

    public static void main(String[] args) {

        try

        {

            throw new B(); //cobalah  ganti baris ini dengan à new

B();

        }

        catch(Exception e)

        {

            System.out.println(e);

        }

    }

}

class B extends Exception

{

    B()

    {

    }

    public String toString()

    {

        return “object dengan tipe kelas B”;

    }

}

object dengan tipe kelas B

Program diatas telah mendefinisikan suatu kelas B mengextends dari kelas Exception.

Ketika kita melakukan throw new B(); maka object dari kelas bertipe B ini akan

Page 13: LAPORAN VI.docx

dianggap kesalahan dan ditangkap oleh block catch. Sekarang jika anda

menghilangkan keyword throw apa yang terjadi?.

5. throws

Keyword throws digunakan dalam suatu method atau kelas yang mungkin

menghasilkan suatu kesalahan sehingga perlu ditangkap errornya. Cara

mendefinisikannya dalam method adalah sebagai berikut : <method modifier> type

method-name throws exception-list1, exceptio-list2, … {}.

Contoh Program :

public class A

{

    public static void main(String[] args) {

        try

        {

            f();

        }

        catch(Exception e)

        {

            System.out.println(e);

        }

    }

    public static void f() throws NullPointerException,

ArrayIndexOutOfBoundsException

    {

        //implementasi method

        throw new NullPointerException();

        //throw new ArrayIndexOutOfBoundsException();

    }

}

java.lang.NullPointerException

Contoh program lainnya :

public class A

{

Page 14: LAPORAN VI.docx

    public static void main(String[] args) {

        try

        {

            f();

        }

        catch(Exception e)

        {

            System.out.println(e);

        }

    }

    public static void f() throws NullPointerException,

ArrayIndexOutOfBoundsException

    {

        //implementasi method

        //throw new NullPointerException();

        throw new ArrayIndexOutOfBoundsException();

    }

}

java.lang.ArrayIndexOutOfBoundsException

Perhatikan kedua contoh pengguaan keyword throws pada method. Ketika method

tersebut dipanggil dalam block try. Maka method tersebut akan membuat object yang

merupakan subclass dari class Throwable dan method tersebut akan melemparkan

kesalahan yang ada dalam block method kedalam block try. Di dalam block try,

kesalahan tersebut kemudian ditangkap kedalam block catch.

Melakukan Input

Dalam JAVA input console dilakukan melalui pembacaan terhadap stream System.in.

untuk mendapatkan karakter-karakter yang dimasukkan melalui keyboard ke dalam

layar console, kita perlu membungkus System.in di dalam objek BufferedReader.

Bentuk constructor dari BufferedReader :

BufferedReader(Reader inputReader)

Agar objek dari inputStreamReader dapat dihubungkan dengan System.in, kita perlu

menggunakan konstruktor

InputStreamReader(InputStream inputStream)

Page 15: LAPORAN VI.docx

Dengan demikian, untuk membuat objek BufferedReader yang dapat terhubung

dengan keyboard, kita perlu menggunakan kode

BufferedReader br = new BufferedReader(new

InputStreamReader(System.in));

Atau

InputStreamReader isr = new InputStreamReader(System.in);

BufferedReader br = new BufferedReader(isr);

1. Membuat input berupa karakter

Untuk membaca input berupa karakter menggunakan method read( )

Method read mengembalikan nilai bertipe int, sehingga untuk menjadikannya sebagai

karakter, kita perlu melakukan typecasting ke tipe char.

2. Mwmbaca input string

Untuk melakukan input berupa string kita harus menggunakan method readLine(), bukan

read()

3. Membaca input data numerik

Untuk melakukan input data numerik cara yang perlu dilakukan sama seperti input data

string, selanjutnya string hasil input tersebut dikonversi ke tipe numerik.

Contoh program membaca input data integer :

Page 16: LAPORAN VI.docx

Contoh program membaca input data double :

Penj

Page 17: LAPORAN VI.docx

C. Latihan

LATIHAN

1. Latihan 1. Tanpa Exception Handling

DivByZero.java

a. Output program adalah

b. Ciri-ciri program yang tidak menggunakan exception handling :

Penjelasan program

Program diatas untuk menampilkan program java yang tidak menggunakan exception

handling. Output akan error karena terjadi kesalahan dalam program di atas.

class DivByZero{

public static void main(String args[]){

System.out.println(5/0);

System.out.println("ini adalah program ");

}

}

Pada script System.out.println(“ini adalah program ”); tidak dijalankan

karena terjadi kesalahan pada 5/0, karena kesalahan itulah eksekusi akan

dihentikan.

Page 18: LAPORAN VI.docx

2. Latihan 2. Dengan Exception Handling

DivByZeroWithEx.java

a. Output program

Penjelasan program :

Program di atas menggunakan Exception Handling. Program menggunakan tipe

exception ArithmeticException dimana akan error karena kesalahan aritmatika

seperti pembagian dengan nol (5/0).

class DivByZeroWithEx{

public static void main(String args[]){

try{

System.out.println(5/0);

System.out.println("Keluaran program ");

}

catch(ArithmeticException exc){

//dibagi dengan 0 --> AritmethicException

System.out.println("Exception yang

ditangkap : "+exc);

}

System.out.println("Setelah Exception...");

}

}

Page 19: LAPORAN VI.docx

3. Latihan 3. Multiple Catch

Multiplecatch.java

a. Output program :

public class multiplecatch{

public static void main(String[]args){

try

{

int a=3/0; //berpotensi utuk menimbulkan kesalahan

int num=Integer.parseInt(args[0]);

System.out.println("Perintah selanjutnya.....");

}

catch(ArrayIndexOutOfBoundsException e){

}

catch(NullPointerException e){

}

catch(Exception e){

}

}

}

Page 20: LAPORAN VI.docx

b. Ketika melakukan running program, tambahlah argument berupa String Nama

kota kelahiran anda!

Output program :

public class lahir

{

public static void main (String [] args) {

try {

int a=3/0;

int num = Integer.parseInt

("Pasuruan");

System.out.println("perintah

selanjutnya..");

}

catch(ArrayIndexOutOfBoundsException e){

}

catch (NullPointerException e) {

}

catch (Exception e){

}

}

}

Page 21: LAPORAN VI.docx

c. Ketika melakukan running program, tambahlah argument berupa Angka Nol!

Output program

public class angkaNol{

public static void main(String[] args) {

try{

int num = Integer.parseInt("0");int a = 3/0;

System.out.println("perintah selanjutnya...");

}catch(NullPointerException e){

System.out.println("EROR1 " + e);}catch(ArrayIndexOutOfBoundsException e){

System.out.println("EROR2 " + e);} catch(Exception e){

//System.out.println("EROR3 " + e);}

}}

Page 22: LAPORAN VI.docx

d. Bagaimana dengan running program tanpa argument.

Output program

e. Apakah pada multiple catch “catch(Exception e)” selalu diletakkan di akhir?

Jelaskan!

Penjelasan program :

public class tanpaArgumen{public static void main(String[] args) {try{int num = Integer.parseInt();int a = 3/0;System.out.println("perintah selanjutnya");}

catch(NullPointerException e){System.out.println("EROR1 " + e);}

catch(ArrayIndexOutOfBoundsException e){System.out.println("EROR2 " + e);

}catch(Exception e){System.out.println("EROR3 " + e);}

}}

Iya selalu, karena catch itu keyword pada pilihan yamg paling akhir jika

pada catch sebelumnya tidak ada yang memenuhinya, jadi akan ditaruh

pada akhir program.

Page 23: LAPORAN VI.docx

Program diatas menggunakan tipe Exception, ArrayIndexOutOfBoundsException

dimana indeks array keluar dari batas.

4. Latihan 4. Try-Catch-Finally

a. Output program :

public class TCF

{

public TCF(){

}

public static void main(String args[])

{

int nol = 0 ;

int angka = 10;

try {

int hasil = angka/nol;

System.out.println("Hasil = "+hasil);

}

catch (ArithmeticException e)

{

System.out.println("terjadi pembagian dgn

nol.Exception ditangkap");

}

finally{

System.out.println("kalimat di blok

finally");

}

System.out.println("Kalimat diluar blok try-catch-

finally");

}

}

Page 24: LAPORAN VI.docx

b. Analisis Exception Handling dengan menggunakan Try-Catch-Finally!

c. Bagaimana perbedaan dengan jenis Exception Handling yang lainnya?

Exception handling dengan menggunakan try-catch-finally adalah salah satu

penanganan eksepsi yang jika blok try mengalami eksepsi maka blok catch

akan dijalankan dan blok finally juga akan dijalankan. Sedangkan jika blok

try tidak mengalami eksepsi maka blok catch tidak akan dijalankan dan blok

finally akan tetap dijalankan. Blok finally mengandung kode penanganan

setelah penggunaan try dan catch. Blok kode ini selalu tereksekusi apapun

yang terjadi pada blok try. Blok kode tersebut juga akan menghasilkan nilai

true meskipun return, continue, ataupun break tereksekusi.

Perbedaan dengan jenis exception handling

- try-catch

Menangani kesalahan tetapi ada bagian yang tidak dieksekusi atau

dijalankan.

- multiple-catch

Mengakibatkan lebih dari satu jenis eksepsi.

- try-catch-finally

Mengakibatkan semua pernyataan yang ada didalam program dieksekusi

atau dijalankan.

Page 25: LAPORAN VI.docx

5. Latihan 5. Melempar exception

Keyword throw

Di samping menangkap exception, Java juga mengijinkan seorang user

untuk melempar sebuah exception. Sintaks pelemparan exception cukup

sederhana.

Throw <exception object>;

Contoh program 1 :

Output program

class ThrowDemo{

public static void main(String []args){

String input="invalid input";

try{

if(input.equals("invalid input")){

throw new RuntimeException("throw demo");

}else{

System.out.println(input);

}

System.out.println("After throwing");

}

catch(RuntimeException e){

System.out.println("Exception caught here.");

System.out.println(e);

}

}

}

Page 26: LAPORAN VI.docx

Program 2 :

class DataMhs{

private String nim;

private String nama;

private double nilai;

public void setNim(String vnim){

try{

nim=vnim;

if(nim==null){

throw new NullPointerException();

}

}catch (NullPointerException npe){

System.out.println("KEASALAHAN: "+"Nim

mahasiswa tidak boleh null");

}

}

public String getNim(){

return nim;

}

public void setNama(String vNama){

try{

nama=vNama;

if(nama==null){

throw new NullPointerException();

}

}catch(NullPointerException npe){

System.out.println("KEASALAHAN: "+"Nama

mahasiswa tidak boleh null");

}

}

public String getNama(){

return nama;

}

public void setNilai(int vnilai){

nilai=vnilai;

}

public double getNilai(){

return nilai;

}

}

Page 27: LAPORAN VI.docx

Output program

Penjelasan program:

Program diatas menggunakan Keyword throw dimana di samping menangkap

exception, Java juga mengijinkan seorang user untuk melempar sebuah exception.

Sintaks pelemparan exception cukup sederhana.

class DemoThrow{

public static void main(String[]args){

DataMhs obj=new DataMhs();

obj.setNim("130533608285");

obj.setNama("gilang lovi");

obj.setNilai(100);

System.out.println("NIM : "+obj.getNim());

System.out.println("Nama : "+obj.getNama());

System.out.println("NIlai: "+obj.getNilai());

}

}

Page 28: LAPORAN VI.docx

Keyword Throws

Jika sebuah method dapat menyebabkan sebuah exception namun tidak

menangkapnya, maka digunakan keyword throws.

Berikut ini penulisan syntax menggunakan keyword throws :

<type> <methodName> (<parameterList>) throws

<exceptionList> {

<methodBody>

}

Contoh program :

public class DemoThrows2 {

public static void uji(int angka)

throws NullPointerException, ArithmeticException {

if (angka < 0) {

throw new NullPointerException("KESALAHAN: null pointer exception");

} else {

throw new ArithmeticException("KESALAHAN: arithmetic exception");

}

}

public static void main(String[] args) {

try {

//uji(-12); // menimbulkan eksepsi NullPointerException

uji(0); // menimbulkan eksepsi ArithmeticException

} catch (Exception e) {

System.out.println("Eksepsi ditangkap di sini...");

System.out.println(e.getMessage());

}

System.out.println("Statemen setelah blok try-catch");

}

}

Page 29: LAPORAN VI.docx

Output program

6. Latihan 6. Membuat eksepsi sendiri

NegativeNumberException.java

class NegativeNumberException extends Exception {

private int bilangan;

// default constructor

NegativeNumberException() {

}

// constructor dengan parameter bertipe String

NegativeNumberException(String pesan) {

super(pesan);

}

// constructor dengan parameter bertipe String dan int

NegativeNumberException(String pesan, int nilai) {

super(pesan);

bilangan = nilai;

}

public int getBilangan() {

return bilangan;

}

}

Page 30: LAPORAN VI.docx

DemoMembuatEksepsi3.java

class DemoMembuatEksepsi3 {

public static int hitungFaktorial(int n)

throws NegativeNumberException {

if (n < 0) {

throw new

NegativeNumberException("Bilangan tidak boleh negatif",

n);

}

int hasil = 1;

for (int i=n; i>=1; i--) {

hasil *= i;

}

return hasil;

}

public static void main(String[] args) {

System.out.println("Pada saat menghitung 5!");

try {

System.out.println("Hasil = " +

hitungFaktorial(5));

} catch (NegativeNumberException nne) {

System.out.println("Bilangan : " +

nne.getBilangan());

//nne.printStackTrace();

}

System.out.println("\nPada saat menghitung -

5!");

try {

System.out.println("Hasil = "

+hitungFaktorial(-5));

} catch (NegativeNumberException nne) {

System.out.println("Bilangan : " +

nne.getBilangan());

nne.printStackTrace();

}

}

}

Page 31: LAPORAN VI.docx

Output program

Penjelasan program:

Program diatas menggunakan Keyword Throws Jika sebuah method dapat

menyebabkan sebuah exception namun tidak menangkapnya, maka digunakan

keyword throws.

MELAKUKAN INPUT

Dalam JAVA input console dilakukan melalui pembacaan terhadap stream System.in.

untuk mendapatkan karakter-karakter yang dimasukkan melalui keyboard ke dalam

layar console, kita perlu membungkus System.in di dalam objek BufferedReader.

Bentuk constructor dari BufferedReader :

BufferedReader(Reader inputReader)

Agar objek dari inputStreamReader dapat dihubungkan dengan System.in, kita perlu

menggunakan konstruktor

InputStreamReader(InputStream inputStream)

Dengan demikian, untuk membuat objek BufferedReader yang dapat terhubung

dengan keyboard, kita perlu menggunakan kode

BufferedReader br = new BufferedReader(new

InputStreamReader(System.in));

Atau

InputStreamReader isr = new InputStreamReader(System.in);

BufferedReader br = new BufferedReader(isr);

1. Membaca input berupa karakter

Page 32: LAPORAN VI.docx

Untuk membaca input berupa karakter menggunakan method read( )

Method read mengembalikan nilai bertipe int, sehingga untuk menjadikannya sebagai

karakter, kita perlu melakukan typecasting ke tipe char.

2. Membaca Input Data String

Untuk melakukan input berupa string kita harus menggunakan method readLine(),

bukan read()

3. Membaca Input Data Numerik

Untuk melakukan input data numerik cara yang perlu dilakukan sama seperti input

data string, selanjutnya string hasil input tersebut dikonversi ke tipe numerik.

Contoh program membaca input data integer :

Page 33: LAPORAN VI.docx

Contoh program membaca input data double :

Page 34: LAPORAN VI.docx

D. Tugas Praktikum

Buatlah sebuah program yang menerapkan pembuatan kelas eksepsi sendiri.

Kemudian uji kelas tersebut dengan membuat kelas Uji Eksepsi yang menggunakan

inputan!

eksepsi.java

class eksepsi {

void salah(){

int array[] = new int[2];

array [345] = 56;

}

}

uji.java

public class uji extends eksepsi {

public static void main (String[] args){

eksepsi a = new eksepsi();

try {

int num = Integer.parseInt(args [0]);

a.salah();

} catch(NullPointerException e){

System.err.println("NullPointerException");

} catch(ArrayIndexOutOfBoundsException e){

System.err.println("ArrayIndexOutOfBoundsException");

} catch(RuntimeException e){

System.err.println("RuntimeException");

} catch(Exception e){

System.err.println("Exception");

} catch(Throwable e){

System.err.println("Throwable");

}

}

}

Page 35: LAPORAN VI.docx

Output program

Penjelasan program

Program di atas menggunakan pembuatan kelas eksepsi dan kemudian untuk

mengujinya mengunakan kelas uji yang menggunakan inputan.

E. Tugas Rumah

Buat program exception handling sendiri dengan spesifikasi :

1. Menggunakan jenis exception handling multiple catch

2. Minimal 3 multiple catch

3. Selain program DivByZero dan Hello World

Page 36: LAPORAN VI.docx

TugasRumah.java

Output program

public class TugasRumah{

public static void main(String[] arg){

try {

int num = Integer.parseInt(arg [0]);

String s= null;

s.length();

} catch(ArrayIndexOutOfBoundsException e){

System.err.println("ArrayIndexOutOfBoundsException");

} catch(ArithmeticException e){

System.err.println("ArithmeticException");

} catch(NullPointerException e){

System.err.println("NullPointerException");

} catch(RuntimeException e){

System.err.println("RuntimeException");

} catch(Exception e){

System.err.println("Exception");

} catch(Throwable e){

System.err.println("Throwable");

}

}

}

Page 37: LAPORAN VI.docx

F. Kesimpulan

Exception mengetahui kesalahan untuk mengatasi error suatu program.Kadang

kala kita perlu mendefenisian program dengan exception yang lebih spesifik untuk

keperluan tertentu, supaya penanganan exception dengan lebih baik. Exception

handling merupakan mekanisme untuk menangkap bug atau kesalahan pada saat

program sedang berjalan.

Keyword pada Exception Handling yaitu try, catch, finally, throw, dan throws.

Jenis Exception Handling :

1. Try Catch

2. Multiple Catch

3. Try-Catch-Finally

Tipe exception yang umum antara lain:

1. ArithmeticException Kesalahan aritmetika, seperti pembagian dengan nol.

2. ArrayIndexOutOfBoundsException Indeks array keluar dari batas.

3. ArrayStoreException Menunjuk ke sebuah elemen array yang tipenya tidak

kompatibel.

4. IllegalArgumentException Argument tidak sah digunakan untuk memanggil

sebuah argument.

5. IndexOutOfBoundsException Beberapa tipe indeks keluar dari batas 

6. NegativeArraySizeException Array dibuat dengan ukuran negative 

7. NullPointerException Invalid use of a null reference. 

8. NumberFormatException Konversi tidak sah dari string kesebuah format

numeric.

9. ClassNotFoundException Class tidak ditemukan.

10. CloneNotSupportedException Berusaha untuk mengklonig sebuahobjek yang

tidak menerapkan

Page 38: LAPORAN VI.docx

G. Daftar Rujukan

1. Tim Dosen S1 Pendidikan Teknik Elektro TE UM.2013. Modul 6. Exception

Handling

2. https://www.academia.edu/3647973/

Laporan_Job_4_Exception_Handling_11_Maret

3. http://autsi.blogspot.com/2011/12/hirarki-class-exception.html