プログラミング

Exception Handling

Oleh: Avrilian Briliansyah

Exception dan Error

Layaknya hidup, dalam pemrograman kita tidak bisa terus berharap bahwa program kita akan selalu berjalan seperti yang kita inginkan. Ketika program berjalan, error atau bug bisa terjadi. Konsekuensinya adalah alur kerja program kita menjadi rusak atau bahkan bisa membuat program kita crash.

Ketika error terjadi di dalam method, method akan melemparkan object Exception yang berisi informasi tentang error yang terjadi ke runtime system. Runtime system akan mencari menemukan sesuatu untuk menanganinya. Hal ini disebut sebagai exception handler .

Exception handler akan menangani error yang ada. Dan kita bisa memanfaatkan exception ini untuk menangani error yang mungkin akan terjadi di program kita sesusai dengan keinginan kita.

Keyword

1. try

Sesuai namanya keyword ini digunakan untuk mencoba menjalankan sebuah block program. try harus dipasangkan dengan catch atau finally.

2. catch

Digunakan untuk menangkap kesalahan pada block try.

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) {
            // Kode akan dieksekusi apabila terjadi error pada block try
            System.err.println(kesalahan);
        }
    }
}

catch juga dapat digunakan berulang-ulang untuk type exception yang berbeda-beda.

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) {
        }
    }
}

3. finally

Adalah blok untuk kode program dimana kode dalam block akan dieksekusi baik saat terdapat error maupun tidak.

public class A {
    public static void main(String[] args) {
        try {
            int a = 1/0;
        }
        catch (Exception e) {
            System.out.println(“ada kesalahan yang muncul”);
        }
        finally {
            System.out.println(“terima kasih telah menjalankan program”);
        }
    }
}

4. throw

Diguanakan untuk membuat exception secara manual.

public class A {
    public static void main(String[] args) {
        try {
            throw new Exception("kesalahan terjadi");
        }
        catch(Exception e) {
            System.out.println(e);
        }
    }
}

throw akan melempar objek bertipe exception dan catch akan menangkapnya.

public class A
{
    public static void main(String[] args) {
        try {
            throw new B();
            //cobalah hilangkan “throw” ganti dengan “new B();” saja
        }
        catch(Exception e) {
            System.out.println(e);
        }
    }
}

class B extends Exception {
    B() {

    }

    public String toString() {
        return “object dengan tipe kelas B”;
    }
}

Diatas, class B me-extends class Exception. Apabila kita me-throw new B() maka B akan ditangkap oleh catch.

5. throws

throws digunakan pada method yang mungkin menghasilkan suatu kesalahan yang perlu ditangkap.

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();
    }
}

Diatas, method f() akan melemparkan exception. Perlu diingat bahwa method yang diberi throws tidak harus selalu melemparkan exception saat dipanggil.

Praktikum

Percobaan 1

Sesudah diperbaiki

Percobaan 2

Sesudah diperbaiki

Percobaan 3

Sesudah diperbaiki

Percobaan 4

Sesudah diperbaiki

Percobaan 5

Pada program diatas try digunakan untuk mencoba melakukan operasi aritmatika yang berpotensi menghasilkan exception. catch digunakan untuk menangkap error tersebut.

Percobaan 6

Pada program diatas try digunakan untuk mencoba memanggil method yang menghasilkan exception. catch digunakan untuk menangkap error tersebut.

Percobaan 7

Pada program diatas try digunakan untuk mencoba melempar exception secara sengaja. catch digunakan untuk menangkap exception tersebut.

Percobaan 8

Pada program diatas throws diimplementasikan ke method yang berpotensi untuk menghasilkan exception.

Setelah class PDelapan diubah

Percobaan 9

Setelah "This is a string" dikosongi

Percobaan 10

Percobaan 11

Percobaan 12