Memahami Exception Handling Pada Pemrograman Java
Jika Java Virtual Machine (JVM) mendeteksi operasi yang mustahil untuk dilakukan, maka saat aktivitas berjalan akan muncul runtime error.
Sebagai contoh, jikalau anda mengakses suatu array memakai index yang out of bonds, maka anda akan mendapat runtime error dengan ArrayIndexOutOfBoundsException.
Atau misalkan ketika anda memasukkan nilai dengan tipe double, padahal aktivitas anda dirancang untuk nilai integer, maka anda akan mendapat runtime error InputMismatchException.
Pada aktivitas Java, runtime error ini akan dilemparkan sebagai pengecualian-pengecualian atau exceptions.
Exceptions ini juga ialah objek yang merepresentasikan suatu error atau kondisi yang mencegah sanksi berjalan secara normal.
Jika exception tidak ditangani maka aktivitas akan berhenti secara tidak normal.
Pertanyaannya ialah bagaimana cara anda untuk menangani exception sehingga aktivitas sanggup terus berjalan atau berhenti dengan baik?
Oleh alasannya itu, bab ini ialah persyaratan non-fungsional untuk aplikasi apa pun. Bertujuan untuk menangani kondisi di mana terjadi kekeliruan dengan baik ibarat resources yang tidak tersedia, input yang tidak valid, input null dan lain sebagainya.
Java menyediakan beberapa fitur untuk handling exception, terdapat secara built-in dalam bentuk keyword try, catch dan finally. Bahasa pemrograman Java juga memungkinkan anda untuk menciptakan exception yang gres dan melemparnya dengan memakai keyword throw dan throws.
Untuk memahami exception handing lihat referensi aba-aba aktivitas di bawah ini:
Pada aba-aba di atas ketika user memasukkan angka 0 pada angka ke dua, maka runtime error akan terjadi lantaran integer tidak sanggup di bagi oleh angka 0. Misalkan referensi output ibarat di bawah ini:
Masukkan dua buah integer:
1
0
Exception in thread "main" java.lang.ArithmeticException: / by zero
at Pembagian.main(Pembagian.java:15)
Cara sederhana untuk mengatasi persoalan ini ialah dengan memakai kondisional if, ibarat pada referensi berikut ini:
Contoh output:
Masukkan dua buah integer:
1
0
Angka pembagi tidak boleh nol!
Sebelum melangkah lebih jauh pada exception handling, aba-aba di atas sanggup ditulis ulang dengan memakai method untuk pembagian ibarat referensi di bawah ini:
Pada aba-aba di atas method pada line (6-12) akan mengembalikan hasil pembagian dari dua buah integer. Jika angka ke dua ialah 0 sebagai pembagi maka aktivitas akan tidak boleh pada line 9.
Ini terperinci ialah sebuah persoalan lantaran anda seharusnya tidak menciptakan method untuk menghentikan program.
Jadi, bagaimana suatu method sanggup memberitahu pemanggilnya bahwa suatu exception telah terjadi? Java mengizinkan suatu method untuk melemparkan suatu exception yang sanggup ditangkap dan ditangani oleh caller atau pemanggil.
Makara aba-aba di atas sanggup ditulis kembali sebagai:
Pada aba-aba di atas jikalau angka kedua atau pembagi ialah 0, maka method akan melemparkan exception pada line 9:
throw new ArithmeticException("Angka pembagi tidak boleh nol!");
Nilai yang dilemparkan, dalam hal ini ialah new ArithmeticException("Angka pembagi tidak boleh nol!"); disebut dengan suatu exception. Sedangkan sanksi dari pernyataan throw disebut dengan melemparkan suatu exception atau throwing an exception.
Objek exception adalah suatu object yang dibentuk dari class Exception. Dalam hal ini class Exception ialah java.lang.ArithmeticException.
Dengan hirarki:
java.lang.Object
java.lang.Throwable
java.lang.Exception
java.lang.RuntimeException
java.lang.ArithmeticException
Konstruktor ArithmeticException(String s) dipanggil untuk mengkonstruksi objek exception. Di mana String s ialah pesan yang menjelaskan mengenai exception.
Ketika sebuah exception dilemparkan, maka alur sanksi secara normal akan terganggu. Seperti istilah "throw an exception" yang artinya ialah untuk mem-pass-kan exception dari satu daerah ke daerah lainnya.
Pernyataan untuk memanggil method terkandung dalam blok try dan catch. Blok try pada line 23 - 28 berisi aba-aba yang dijalankan pada keadaan normal.
Sementara itu exception akan ditangkap oleh blok catch pada line 30 - 33. Makara aba-aba yang terdapat pada blok catch bertujuan untuk menangani exception.
Kemudian pernyataan pada line 35 akan dihukum sehabis blok catch dieksekusi.
Pernyataan throw ini sanggup dianalogikan dengan pemanggilan method. Namun, bukan method yang dipanggil, melainkan blok catch.
Dalam hal ini, suatu blok catch ialah ibarat sebuah definisi method dengan parameter yang sesuai dengan tipe nilai yang dilemparkan. Tidak ibarat method, bagaimanapun, sehabis blok catch dieksekusi, kontrol aktivitas tidak kembali lagi kepada pernyataan throw, melainkan akan melanjutkan ekseskusi pada pernyataan selanjutnya sehabis blok catch.
Pada line 30:
catch (ArithmeticException exception)
Identifier exception berperan sama ibarat parameter dalam sebuah method. Dengan demikian, parameter ini disebut sebagai suatu parameter blok catch.
ArithmeticException di atas, yang ditulis lebih dulu sebelum exception ialah untuk memilih jenis exception apa yang sanggup ditangkap oleh blok catch. Sekali exception ditangkap maka anda sanggup mengakses nilai yang dilemparkan dari parameter ini di dalam body dari blok catch.
Secara ringkas, sebuah template dari blok try-throw-catch akan tampak ibarat ini:
Sebuah exception mungkin sanggup dilontarkan secara eksklusif dengan memakai pernyataan throw di dalam blok try. Atau sanggup juga dengan memakai method yang sanggup melemparkan exception.
Pada line 24, method main memanggil hitungPembagian(). Jika method hitungPembagian() berjalan dengan normal maka maka mengembalikan sebuuah nilai pada caller.
Sebaliknya jikalau method hitungPembagian() menemukan exception maka ia akan melemparkan kembali exception tersebut pada caller. Selanjutnya blok catch dari caller akan menangani exception tersebut.
Dapat dibayangkan bila tanpa kapabilitas tersebut method yang dipanggil itu sendiri harus menangani exception atau menghentikan program. Seringkali method yang dipanggil tidak mengetahui apa yang harus dilakukan ketika terjadi error. Ini ialah kasus yang tipikal untuk method-method library. Library method sanggup mendeteksi error namun hanya caller yang sanggup mengetahui apa yang harus dilakukan ketika error muncul.
Banyak method library melemparkan exceptions. Berikut ini ialah referensi menangani InputMismatchException ketika membaca sebuah input.
Ketika mengeksekusi input.nextInt() pada line 13, suatu InputMismatchException muncul jikalau user memasukkan angka yang bukan merupakan integer.
Misalkan nilai 2.9 diinput, maka InputMismatchException terjadi dan kontrol aktivitas akan dipindahkan ke blok catch line 20-23. Pernyataan di dalam blok tersebut akan dieksekusi.
Pernyataan input.nextLine() pada line 22 akan memusnahkan input line dikala ini dan lalu user sanggup memasukkan input pada line yang baru.
Variabel lanjutkanInput mengontrol loop. Nilai inisialnya ialah true pada line 8 dan lalu diubah menjadi false pada line 17 ketika nilai yang valid diterima. Ketika sebuah input nilai yang valid diterima maka tidak diharapkan lagi untuk melanjutkan input angka.
Sebagai contoh, jikalau anda mengakses suatu array memakai index yang out of bonds, maka anda akan mendapat runtime error dengan ArrayIndexOutOfBoundsException.
Atau misalkan ketika anda memasukkan nilai dengan tipe double, padahal aktivitas anda dirancang untuk nilai integer, maka anda akan mendapat runtime error InputMismatchException.
Pada aktivitas Java, runtime error ini akan dilemparkan sebagai pengecualian-pengecualian atau exceptions.
Exceptions ini juga ialah objek yang merepresentasikan suatu error atau kondisi yang mencegah sanksi berjalan secara normal.
Jika exception tidak ditangani maka aktivitas akan berhenti secara tidak normal.
Pertanyaannya ialah bagaimana cara anda untuk menangani exception sehingga aktivitas sanggup terus berjalan atau berhenti dengan baik?
Exception handling merupakan bab penting dari penulisan aplikasi Java yang tangguh.
Oleh alasannya itu, bab ini ialah persyaratan non-fungsional untuk aplikasi apa pun. Bertujuan untuk menangani kondisi di mana terjadi kekeliruan dengan baik ibarat resources yang tidak tersedia, input yang tidak valid, input null dan lain sebagainya.
Java menyediakan beberapa fitur untuk handling exception, terdapat secara built-in dalam bentuk keyword try, catch dan finally. Bahasa pemrograman Java juga memungkinkan anda untuk menciptakan exception yang gres dan melemparnya dengan memakai keyword throw dan throws.
Ikhtisar Exception Handling
Exceptions dilemparkan (thrown) dari suatu method. Pemanggil (caller) dari method tersebut sanggup menangkap (catch) dan menangani exception itu.Untuk memahami exception handing lihat referensi aba-aba aktivitas di bawah ini:
Pada aba-aba di atas ketika user memasukkan angka 0 pada angka ke dua, maka runtime error akan terjadi lantaran integer tidak sanggup di bagi oleh angka 0. Misalkan referensi output ibarat di bawah ini:
Masukkan dua buah integer:
1
0
Exception in thread "main" java.lang.ArithmeticException: / by zero
at Pembagian.main(Pembagian.java:15)
Contoh output:
Masukkan dua buah integer:
1
0
Angka pembagi tidak boleh nol!
Sebelum melangkah lebih jauh pada exception handling, aba-aba di atas sanggup ditulis ulang dengan memakai method untuk pembagian ibarat referensi di bawah ini:
Pada aba-aba di atas method pada line (6-12) akan mengembalikan hasil pembagian dari dua buah integer. Jika angka ke dua ialah 0 sebagai pembagi maka aktivitas akan tidak boleh pada line 9.
Ini terperinci ialah sebuah persoalan lantaran anda seharusnya tidak menciptakan method untuk menghentikan program.
Jadi, bagaimana suatu method sanggup memberitahu pemanggilnya bahwa suatu exception telah terjadi? Java mengizinkan suatu method untuk melemparkan suatu exception yang sanggup ditangkap dan ditangani oleh caller atau pemanggil.
Makara aba-aba di atas sanggup ditulis kembali sebagai:
Pada aba-aba di atas jikalau angka kedua atau pembagi ialah 0, maka method akan melemparkan exception pada line 9:
throw new ArithmeticException("Angka pembagi tidak boleh nol!");
Nilai yang dilemparkan, dalam hal ini ialah new ArithmeticException("Angka pembagi tidak boleh nol!"); disebut dengan suatu exception. Sedangkan sanksi dari pernyataan throw disebut dengan melemparkan suatu exception atau throwing an exception.
Objek exception adalah suatu object yang dibentuk dari class Exception. Dalam hal ini class Exception ialah java.lang.ArithmeticException.
Dengan hirarki:
java.lang.Object
java.lang.Throwable
java.lang.Exception
java.lang.RuntimeException
java.lang.ArithmeticException
Konstruktor ArithmeticException(String s) dipanggil untuk mengkonstruksi objek exception. Di mana String s ialah pesan yang menjelaskan mengenai exception.
Ketika sebuah exception dilemparkan, maka alur sanksi secara normal akan terganggu. Seperti istilah "throw an exception" yang artinya ialah untuk mem-pass-kan exception dari satu daerah ke daerah lainnya.
Blok try dan catch
Pernyataan untuk memanggil method terkandung dalam blok try dan catch. Blok try pada line 23 - 28 berisi aba-aba yang dijalankan pada keadaan normal.
Sementara itu exception akan ditangkap oleh blok catch pada line 30 - 33. Makara aba-aba yang terdapat pada blok catch bertujuan untuk menangani exception.
Kemudian pernyataan pada line 35 akan dihukum sehabis blok catch dieksekusi.
Pernyataan throw ini sanggup dianalogikan dengan pemanggilan method. Namun, bukan method yang dipanggil, melainkan blok catch.
Dalam hal ini, suatu blok catch ialah ibarat sebuah definisi method dengan parameter yang sesuai dengan tipe nilai yang dilemparkan. Tidak ibarat method, bagaimanapun, sehabis blok catch dieksekusi, kontrol aktivitas tidak kembali lagi kepada pernyataan throw, melainkan akan melanjutkan ekseskusi pada pernyataan selanjutnya sehabis blok catch.
Parameter Blok catch
Pada line 30:
catch (ArithmeticException exception)
Identifier exception berperan sama ibarat parameter dalam sebuah method. Dengan demikian, parameter ini disebut sebagai suatu parameter blok catch.
ArithmeticException di atas, yang ditulis lebih dulu sebelum exception ialah untuk memilih jenis exception apa yang sanggup ditangkap oleh blok catch. Sekali exception ditangkap maka anda sanggup mengakses nilai yang dilemparkan dari parameter ini di dalam body dari blok catch.
Secara ringkas, sebuah template dari blok try-throw-catch akan tampak ibarat ini:
Sebuah exception mungkin sanggup dilontarkan secara eksklusif dengan memakai pernyataan throw di dalam blok try. Atau sanggup juga dengan memakai method yang sanggup melemparkan exception.
Pada line 24, method main memanggil hitungPembagian(). Jika method hitungPembagian() berjalan dengan normal maka maka mengembalikan sebuuah nilai pada caller.
Sebaliknya jikalau method hitungPembagian() menemukan exception maka ia akan melemparkan kembali exception tersebut pada caller. Selanjutnya blok catch dari caller akan menangani exception tersebut.
Keuntungan Menggunakan Exception Handling
Sekarang anda sanggup melihat laba memakai exception handling. Keuntungannya dalah memungkinkan sebuah method untuk melemparkan exception pada pemanggilnya atau caller dan memungkinkan caller untuk menangani exception tersebut.Dapat dibayangkan bila tanpa kapabilitas tersebut method yang dipanggil itu sendiri harus menangani exception atau menghentikan program. Seringkali method yang dipanggil tidak mengetahui apa yang harus dilakukan ketika terjadi error. Ini ialah kasus yang tipikal untuk method-method library. Library method sanggup mendeteksi error namun hanya caller yang sanggup mengetahui apa yang harus dilakukan ketika error muncul.
Manfaat utama dari exception handling ialah memisahkan pendeteksian suatu error dari penanganan error.
Banyak method library melemparkan exceptions. Berikut ini ialah referensi menangani InputMismatchException ketika membaca sebuah input.
Ketika mengeksekusi input.nextInt() pada line 13, suatu InputMismatchException muncul jikalau user memasukkan angka yang bukan merupakan integer.
Misalkan nilai 2.9 diinput, maka InputMismatchException terjadi dan kontrol aktivitas akan dipindahkan ke blok catch line 20-23. Pernyataan di dalam blok tersebut akan dieksekusi.
Pernyataan input.nextLine() pada line 22 akan memusnahkan input line dikala ini dan lalu user sanggup memasukkan input pada line yang baru.
Variabel lanjutkanInput mengontrol loop. Nilai inisialnya ialah true pada line 8 dan lalu diubah menjadi false pada line 17 ketika nilai yang valid diterima. Ketika sebuah input nilai yang valid diterima maka tidak diharapkan lagi untuk melanjutkan input angka.
Belum ada Komentar untuk "Memahami Exception Handling Pada Pemrograman Java"
Posting Komentar