Digital Belajar - Java

Repositori pembelajaran mata kuliah pemrograman Java

View the Project on GitHub

Exception: Try … Catch

Hal-hal di luar harapan bisa terjadi ketika program kita dijalankan. Hal ini bisa menyebabkan program berhenti (runtime error). Hal yang bisa menyebabkan muncul runtime error: pada bagian membaca input dari user, membaca file, membaca data lewat jaringan.

Berikut contoh program sederhana membaca input dari user:

import java.util.Scanner;

public class Bilangan1 {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int n1 = 0;
        int n2 = 0;

        System.out.print("A? ");
        n1 = scan.nextInt();

        System.out.print("B? ");
        n2 = scan.nextInt();

        System.out.print("A x B = "+(n1*n2));

        scan.close();
    }
}

Program diatas, akan meminta user memasukan 2 angka dan mengkalikannya. Masalah yang akan timbul adalah jika user menginput sesuatu yang bukan angka integer, jika itu terjadi, maka Java akan menghentikan progran dan memberitahukan runtime error.

C:\latihan>java Bilangan1.java
A? 32i
Exception in thread "main" java.util.InputMismatchException
        at java.base/java.util.Scanner.throwFor(Scanner.java:939)
        at java.base/java.util.Scanner.next(Scanner.java:1594)
        at java.base/java.util.Scanner.nextInt(Scanner.java:2258)
        at java.base/java.util.Scanner.nextInt(Scanner.java:2212)
        at Bilangan1.main(Bilangan1.java:10)

Menampilkan runtime error pada user adalah sesuatu yang buruk, karena itu menandakan bahwa ada kesalahan yang tidak ditangani oleh program. Untuk mengantisipasi kesalahan yang mungkin muncul, kita bisa menggunakan blok perintah trycatch pada bagian-bagian program yang mungkin terjadi runtime error.

Contoh program dengan trycatch:

import java.util.Scanner;

public class Bilangan2 {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int n1 = 0;
        int n2 = 0;

        try {
            System.out.print("A? ");
            n1 = scan.nextInt();

            System.out.print("B? ");
            n2 = scan.nextInt();

            System.out.print("A x B = "+(n1*n2));
        } catch (Exception e) {
            System.out.println("Anda memasukan input yang salah");
            System.out.println("Pesan error"+e.getMessage());
        }

        scan.close();
    }
}

Latihan:

finally

Kata kunci finally digunakan berpasangan dengan trycatch, di dalamnya kita bisa menuliskan kode program yang harus dijalankan dalam keadaan program error ataupun tidak. Contoh, pada program dibawah ini, kita menuliskan scan.close() di dalam blok finally untuk memastikan objek scan ditutup/dibersikan dari memori sebelum akhirnya program ditutup.

import java.util.Scanner;

public class Bilangan2 {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int n1 = 0;
        int n2 = 0;

        try {
            System.out.print("A? ");
            n1 = scan.nextInt();

            System.out.print("B? ");
            n2 = scan.nextInt();

            System.out.print("A x B = "+(n1*n2));
        } catch (Exception e) {
            System.out.println("Anda memasukan input yang salah");
            System.out.println("Pesan error"+e.getMessage());
        } finally {
            scan.close();
        }

    }
}

Latihan:

Referensi: