Penanganan Pengecualian di Jawa [Dengan Contoh]

Diterbitkan: 2020-11-12

Pengecualian adalah peristiwa yang tidak diinginkan dan tidak terduga dari suatu program yang tidak pernah diinginkan oleh seorang programmer tetapi harus menghadapinya berkali-kali. Sisi baiknya adalah dimungkinkan dengan bahasa berorientasi objek Java untuk mengurangi kejadian yang tidak diinginkan tersebut melalui konsep yang disebut 'Penanganan Pengecualian di Java '. Itu tidak memperbaiki pengecualian tetapi menyediakan cara alternatif untuk menghadapinya.

Ada banyak alasan untuk pengecualian terjadi termasuk entri data yang salah, kegagalan perangkat keras, kegagalan koneksi, server down, dll. Oleh karena itu, penanganan pengecualian adalah dan akan selalu menjadi penting dalam proses belajar Java karena membantu untuk memastikan normal aliran suatu program pada saat kejadian yang tidak diharapkan terjadi. Mengabaikan pengecualian dapat menyebabkan seluruh perangkat lunak macet dan dapat mengakibatkan hilangnya data.

Sekarang setelah kita mendapatkan ide tentang pengecualian dan penanganan pengecualian, mari selami lebih dalam dan juga memahami bagaimana Java membantu dalam menangani pengecualian.

Baca: Pertanyaan Wawancara Penanganan Pengecualian

Daftar isi

Apa itu Penanganan Pengecualian?

Pengembang dapat memprediksi pengecualian yang dapat dilontarkan oleh sepotong kode selama waktu proses. Salah satu hal terpenting yang membuat banyak pelajar menjadi ambigu adalah bahwa semua pengecualian terjadi selama runtime dan bukan pada saat kompilasi. Java hanya dapat menangani pengecualian selama runtime. Ada kata kunci tertentu yang digunakan dalam program java untuk membuat blok penangan pengecualian.

java.lang.Exception adalah kelas induk dari semua kelas pengecualian. Kelas Exception adalah subkelas dari kelas Throwable bawaan yang merupakan subkelas dari kelas Object . Selain Exception, Throwable juga memiliki class lain yaitu Error yang merupakan kondisi abnormal pada saat eksekusi program yang tidak dapat ditangani oleh program Java yang merupakan perbedaan utama antara Error dan Exception.

Seperti yang ditunjukkan pada gambar di atas, ada dua kategori Pengecualian di Jawa. Pada bagian selanjutnya, kita akan melihat secara detail jenis-jenis exception di Java.

Pengecualian Jawa

Akar penyebab pengecualian adalah yang disebabkan oleh programmer atau sumber daya fisik yang gagal karena beberapa alasan. Berdasarkan ini, terutama ada dua kategori Pengecualian di Jawa sebagai berikut rincian yang diikuti:

  1. Pengecualian yang diperiksa
  2. Pengecualian yang tidak dicentang

1. Pengecualian yang Dicentang

Pengecualian yang diperiksa dikenal sebagai 'pengecualian waktu kompilasi' karena diperiksa selama kompilasi oleh kompiler untuk memantau jika pengecualian ditangani oleh programmer. Sistem kemudian menampilkan kesalahan kompilasi.

Beberapa contoh pengecualian ini adalah IOException , Baca: Ide Proyek Java untuk Pemula

2. Pengecualian Tidak Dicentang

Pengecualian yang tidak dicentang disebut 'Pengecualian runtime' karena terjadi selama runtime program. Pengecualian yang tidak dicentang biasanya diabaikan selama kompilasi dan tidak dicentang.

Contoh pengecualian ini dapat berupa bug dalam program seperti kesalahan logika, atau menggunakan API yang salah yang tidak berada dalam kendali pemrogram dan memerlukan administrator sistem untuk memperbaikinya.

Pengecualian Dicentang Vs Tidak Dicentang

Membedakan Poin Pengecualian yang Dicentang Pengecualian Tidak Dicentang Waktu penanganan Pengecualian yang Diperiksa diperiksa dan ditangani pada saat kompilasi. Pengecualian yang Tidak Dicentang tidak dicentang pada saat kompilasi.
Identifikasi Pengecualian Program memberikan kesalahan kompilasi jika suatu metode melempar pengecualian yang diperiksa. Program mengkompilasi dengan baik karena kompiler tidak dapat memeriksa pengecualian.
Warisan Mereka tidak mewarisi kelas RuntimeException. Mereka adalah subclass dari kelas RuntimeException.
Peran Pengembang Dapat ditangani oleh pengembang. Tidak dapat ditangani oleh pengembang.

Memahami pengecualian adalah langkah utama sebelum menanganinya.

Bagaimana Java membantu dalam Menangani Pengecualian?

Sekarang kita tahu ada dua jenis pengecualian di Java yaitu, dicentang dan tidak dicentang. Jika suatu metode melempar pengecualian yang dicentang, itu harus ditangani dengan blok try-catch atau kata kunci 'lemparan' harus dideklarasikan untuk menghindari kesalahan kompilasi dalam suatu program.

Contoh Pengecualian yang Dicentang:

Ini adalah program membaca file bernama 'Java'. Ada tiga tempat di mana pengecualian yang diperiksa dilemparkan:

  1. FileInputStream: Digunakan untuk menentukan jalur file dan lemparan nama FileNotFoundException .
  2. Metode read(): Membaca konten file melempar IOException ;

aku aku aku. Metode close(): Menutup aliran input file melempar IOException .

impor java.io.*;

kelas Contoh {

public static void main( String args[])

{

FileInputStream fis = null ;

/*Konstruktor FileInputStream(Nama file file)

* melempar pengecualian yang dicentang FileNotFoundException */

fis = new FileInputStream ( “B:/java.txt” );

int k;

/* Metode read() dari lemparan kelas FileInputStream

* pengecualian yang dicentang: IOException

*/

while (( k = fis.read() ) != – 1 )

{

Sistem . keluar . cetak (( char )k);

}

/*Metode close() menutup aliran input file

*melempar IOException*/

fis.close();

}

}

Output Dari Program Di Atas:

Pengecualian ditemukan di utas "utama" java.lang. Kesalahan : Masalah kompilasi yang belum terselesaikan :

Pengecualian yang tidak tertangani FileNotFoundException ditemukan

Pengecualian yang tidak tertangani IOException ditemukan

Pengecualian yang tidak tertangani IOException ditemukan

Alasan kesalahan kompilasi ini: Non-deklarasi atau penanganan pengecualian.

Harus Dibaca: Proyek Java GitHub

Metode Penanganan Pengecualian

Ada dua cara di mana pengecualian dapat ditangani dijelaskan sebagai berikut:

Metode 1: Mendeklarasikan kata kunci pengecualian 'melempar'

Dalam program di atas, ketiga pengecualian yang diperiksa berada di dalam metode main(). Jadi, salah satu cara untuk menghindari kesalahan kompilasi adalah dengan mendeklarasikan pengecualian dalam metode menggunakan kata kunci 'throws'. Karena IOException adalah kelas induk dari FileNotFoundException, itu juga akan mencakupnya.

Program yang diperbarui menggunakan kata kunci throws:

impor java.io.*;

kelas Contoh {

public static void main( String args[]) melempar IOException

{

FileInputStream fis = null ;

fis = new FileInputStream ( “B:/java.txt” );

int k;

while (( k = fis.read() ) != – 1 )

{

Sistem . keluar . cetak (( char )k);

}

fis.close();

}

}

Keluaran:

Menampilkan konten file di layar.

Metode 2: Tangani pengecualian menggunakan blok try-catch.

Ini adalah pendekatan yang lebih maju untuk yang di atas dan salah satu praktik penanganan pengecualian terbaik. Kode program yang diubah termasuk blok try-catch adalah sebagai berikut:

impor java.io.*;

kelas Contoh {

public static void main( String args[])

{

FileInputStream fis = null ;

coba {

fis = new FileInputStream ( “B:/java.txt” );

} tangkap ( FileNotFoundException fnfe){

Sistem . out .println( "File bukan " +

“hadir di jalur yang ditentukan” );

}

int k;

coba {

while (( k = fis.read() ) != – 1 )

{

Sistem . keluar . cetak (( char )k);

}

fis.close();

} tangkap ( IOException ioe){

Sistem . out .println( "Kesalahan I/O " +ioe);

}

}

}

Keluaran:

Kode ini pada akhirnya akan menampilkan konten file.

Contoh Pengecualian yang Tidak Dicentang

Pengecualian yang tidak dicentang tidak dicentang pada saat kompilasi. Program tidak akan memberikan kesalahan kompilasi jika tidak dideklarasikan atau ditangani dan akan berjalan dengan baik. Tugas pengembang adalah memprediksi kondisi yang mungkin terjadi sebelumnya yang menyebabkan pengecualian tersebut dan menanganinya. Semua pengecualian yang tidak dicentang adalah subkelas dari kelas RuntimeException .

kelas Contoh {

public static void main( String args[])

{

int angka1= 10 ;

int bilangan2= 0 ;

/*Membagi bilangan apa saja dengan 0

* Akan membuang ArithmeticException

*/

int res=angka1/angka2;

Sistem . keluar .println(res);

}

}

Kode akan berhasil dikompilasi dengan kode ini tetapi selama runtime, itu akan membuang ArithmeticException karena pengecualian yang tidak dicentang tidak diperiksa pada waktu kompilasi. Mari kita lihat contoh lain.

kelas Contoh {

public static void main( String args[])

{

int arr[] ={ 1 , 2 , 3 , 4 , 5 };

/* Array memiliki 5 elemen tetapi kami ingin

* menampilkan nilai elemen ke-8. Ini akan melempar

* ArrayIndexOutOfBoundsException

*/

Sistem . keluar .println(arr[ 7 ]);

}

}

Kode ini juga akan berhasil dikompilasi karena ArrayIndexOutOfBoundsException adalah pengecualian yang tidak dicentang.

Di sini, untuk menangani Pengecualian yang Tidak Dicentang, harus ada pesan pengecualian yang ditampilkan kepada pengguna yang ingin dia tampilkan, tetapi tidak ada dalam array.

Menangani pengecualian kode di atas dengan blok try-catch

kelas Contoh {

public static void main( String args[]) {

coba {

int arr[] ={ 1 , 2 , 3 , 4 , 5 };

Sistem . keluar .println(arr[ 7 ]);

}

tangkap ( ArrayIndexOutOfBoundsException e){

Sistem . out .println( "Indeks yang ditentukan tidak ada " +

“dalam susunan.” );

}

}

}

Keluaran:

Indeks yang ditentukan tidak ada dalam larik.

Catatan: Mungkin ada beberapa blok tangkap di dalam blok coba untuk menangani pengecualian yang berbeda.

Metode 3 : Menggunakan kata kunci 'akhirnya'

Kadang-kadang terjadi bahwa kode perlu dieksekusi bahkan jika pengecualian terjadi. Di sinilah kata kunci terakhir digunakan. Berikut adalah kode khas dengan kata kunci 'akhirnya'.

publik int getPlayerScore(String playerFile)

melempar FileNotFoundException {

Isi pemindai = null;

mencoba {

isi = Pemindai baru ( File baru (playerFile));

kembalikan Integer.parseInt(isi.nextLine());

} akhirnya {

if (isi != null ) {

isi.tutup();

}

}

}

Di sini, blok terakhir menunjukkan kode yang kita inginkan agar Java dijalankan ketika mencoba membaca file.

Bahkan jika FileNotFoundException dilempar, Java akan memanggil konten dari last .

Kami dapat menangani pengecualian dengan memodifikasi kode seperti di bawah ini:

public int PlayerScore(String playerRuns) {

Isi pemindai;

mencoba {

isi = Pemindai baru (File baru (playerRuns));

kembalikan Integer.parseInt(isi.nextLine());

} tangkap (FileNotFoundException noFile ) {

logger.warn("File tidak ditemukan.");

kembali 0;

} akhirnya {

mencoba {

if (isi != null) {

isi.tutup();

}

} tangkap (IOException ioexc) {

logger.error(“Pembaca tidak dapat ditutup.”, ioexc);

}

}

}

Kesimpulan

Dengan artikel ini, kami telah mencoba membahas dasar-dasar kesalahan dan pengecualian dan penanganan pengecualian di Java . Kami berharap panduan ini akan memberi Anda ide bagus tentang fitur unik yang ditawarkan Java ini dan Anda sekarang dapat menangani pengecualian dan memulihkannya dengan lebih baik. Kesimpulan

Java menyediakan cara untuk menangani pengecualian langsung dari yang khusus hingga yang umum. Pengecualian yang tidak dapat diprediksi dengan mudah sebelumnya disebut pengecualian yang tidak tertangani. Menangkap semua pengecualian menawarkan visibilitas ke tim pengembangan pada kualitas kode dan akar penyebab kesalahan yang dapat diperbaiki dengan cepat.

Jika Anda tertarik untuk mempelajari lebih lanjut tentang Java, pengembangan tumpukan penuh, lihat Diploma PG upGrad & IIIT-B dalam Pengembangan Perangkat Lunak Tumpukan Penuh. Ini secara hati-hati dikuratori untuk para profesional dan memastikan dukungan karir 360 derajat dan termasuk proyek langsung untuk dikerjakan. Pada akhir kursus, Anda akan dapat merancang dan membangun aplikasi seperti Swiggy, IMDB, dll.

Bukankah itu terdengar menarik!-

Menjadi Pengembang Tumpukan Penuh

UPGRAD DAN DIPLOMA PG IIIT-BANGALORE DALAM PENGEMBANGAN PERANGKAT LUNAK
Belajarlah lagi