Memahami Hierarki Pengecualian di Java Dijelaskan
Diterbitkan: 2022-03-08istilah 'Exception' adalah kependekan dari "exceptional event". Di Jawa, Pengecualian pada dasarnya adalah peristiwa yang terjadi selama eksekusi program dan mengganggu aliran normal program. Pengecualian tidak diinginkan dan sebagian besar tidak terduga, yang umumnya muncul pada saat run- atau waktu kompilasi. Semua Pengecualian ini perlu ditangani untuk memastikan program berjalan dalam aliran alaminya.
Namun, sebelum Anda menangani Pengecualian, akan membantu untuk mengetahui berbagai jenis Pengecualian yang ada di Java. Melalui artikel ini, mari kita lihat berbagai jenis Exception pada Java dan Exception Hierarchy yang diikutinya.
Daftar isi
Pengecualian Hirarki di Jawa
Hirarki Pengecualian dalam bahasa pemrograman Java dimulai dengan kelas Throwable – yang berasal dari kelas Object dan merupakan subkelas langsungnya, sedangkan kelas Pengecualian menyajikan semua kelas Throwable ini selanjutnya bercabang menjadi dua subkelas – Kesalahan dan Pengecualian. Berikut adalah diagram alur untuk memahami hierarki Pengecualian Java dengan lebih baik:
Kelas Pengecualian menyajikan semua Pengecualian yang mungkin perlu Anda tangani saat bekerja dengan bahasa pemrograman Java. Beberapa contoh Pengecualian yang umum dikenal dan ditemui termasuk NullPointerException, ClassNotFoundException, IllegalArgumentException, dll.
Di sisi lain, kelas Error menangani masalah yang lebih parah dalam arsitektur program Java Anda dan tidak ditangani di dalam kode aplikasi. Beberapa contoh kesalahan di Java adalah InternalError, AssertionError, OutOfMemoryError, dll.
Pengecualian di Jawa selanjutnya dibagi menjadi dua kategori:
- Pengecualian yang Diperiksa – Ini juga dikenal sebagai pengecualian waktu kompilasi.
- Pengecualian Tidak Dicentang – Ini juga dikenal sebagai pengecualian runtime.
Satu hal penting yang perlu diperhatikan pada saat ini adalah bahwa Pengecualian yang tidak dicentang adalah semua subkelas dari kelas RuntimeException. Kami akan berbicara lebih banyak tentang pengecualian yang dicentang dan tidak dicentang nanti di artikel ini. Tapi sebelum itu, mari kita lihat pada dasarnya bagaimana Kesalahan dan Pengecualian berbeda dalam cara kerjanya sehingga tidak ada kebingungan.
Kesalahan dan Pengecualian di Java – Bagaimana Perbedaannya?
Dokumentasi resmi bahasa pemrograman Java mengacu pada Errors sebagai kejadian selama pemrograman Java Anda yang – “menunjukkan masalah serius yang tidak boleh ditangkap oleh aplikasi yang masuk akal.” Keseriusan Kesalahan jelas dari cara pernyataan ini disusun. Jelas, ini mengacu pada serangkaian masalah yang mungkin dihadapi program Anda yang tidak mungkin dipulihkan tanpa memfaktorkan ulang kode atau memodifikasi arsitektur aplikasi Java.
Mari kita lihat metode Java yang akan menimbulkan kesalahan:
public static void print(String S) {
cetak(S);
}
Dalam kode yang disebutkan di atas, metode print() bertindak sebagai metode rekursif yang terus memanggil dirinya sendiri berulang kali, berulang-ulang, hingga mencapai ukuran maksimum yang diizinkan untuk tumpukan utas di Java. Pada saat itu, ia keluar dari eksekusi dengan sangat umum – StackOverflowError, yang berbunyi seperti:
Pengecualian di utas "utama" java.lang.StackOverflowError
di StackOverflowErrorExample.print(StackOverflowErrorExample.java:3)
Seperti yang ditunjukkan oleh contoh di atas, metode ini memberikan contoh, tetapi kesalahan ini tidak dapat ditangani dalam kode itu sendiri. Jadi, program hanya berhenti eksekusi karena kerusakan tidak dapat dipulihkan. Sebagai solusi, kode tersebut perlu diubah.
Bertentangan dengan Kesalahan, Pengecualian menunjukkan kondisi yang dapat ditangkap oleh aplikasi yang masuk akal. Pengecualian di Java mencakup masalah yang mungkin terjadi pada waktu kompilasi atau selama waktu berjalan. Pengecualian ini agak sering terjadi di semua aplikasi – terutama selama fase pengujian dan debugging. Akibatnya, Pengecualian di Java dapat ditangani di dalam program itu sendiri untuk memastikan bahwa kode berjalan dengan aliran alaminya.
Sekarang, mari kita bicara lebih banyak tentang Exception Hierarchy di Java dengan melihat apa itu Exception yang dicentang dan yang tidak dicentang.
Pengecualian yang Dicentang dan Tidak Dicentang di Java
Seperti disebutkan sebelumnya, Pengecualian dalam program Java dapat terjadi selama waktu kompilasi atau selama waktu berjalan. Inilah yang memberi kita dua jenis Pengecualian yang ada di Jawa. Berikut adalah melihat dua pengecualian ini secara rinci.
Pengecualian waktu kompilasi
Pengecualian yang terjadi pada waktu kompilasi dikenal sebagai pengecualian waktu kompilasi. Ini juga disebut pengecualian yang diperiksa karena fakta bahwa Anda perlu memeriksanya secara eksplisit di program Java Anda dan menanganinya dalam kode itu sendiri. Kelas seperti InterruptedException, IOException, dan lainnya adalah pengecualian yang diperiksa.
Mari kita lihat metode yang dapat menangani pengecualian yang diperiksa:
public void writeAFile() {
coba (BufferedWriter b_w = new BufferedWriter(New FileWriter(“myFile.txt”))) {
b_w.write(“Pengujian”);
} tangkap (IOException ioe) {
ioe.printStackTrace();
}
}
Seperti yang Anda lihat, ada dua pernyataan di blok coba kode di atas –
- Membuat instance objek – BufferedWriter
- Menggunakan objek untuk menulis ke file
Kedua pernyataan ini dapat membuang IOException. IOException, sebagai Pengecualian yang Diperiksa, perlu ditangani baik oleh pemanggil atau metode. Dalam contoh di atas, Anda dapat melihat pengecualian ditangani di dalam metode itu sendiri.
Pengecualian Waktu Proses
Berlawanan dengan pengecualian waktu kompilasi yang dilemparkan selama waktu kompilasi, pengecualian runtime atau tidak dicentang dapat dilemparkan "kapan saja", yang pada dasarnya berarti saat runtime. Akibatnya, metode tidak perlu secara eksplisit menggunakan blok tangkap dan lempar untuk menangani pengecualian yang tidak dicentang ini. Beberapa kelas yang mewarisi pengecualian runtime yang tidak dicentang termasuk – NullPointerException, ArithmeticException, dll.
Mari kita lihat sepotong kode Java yang melempar Pengecualian tidak dicentang NullPointerException dan yang tidak ditangani dalam potongan kode tidak seperti sebelumnya. Ini dia:
public void writeToFile() {
coba (BufferedWriter b_w = null) {
b_w.write("Uji");
} tangkap (IOException ioe) {
ioe.printStackTrace();
}
}
Saat Anda memanggil metode di atas, program akan melempar NullPointerException karena objek BufferedWriter adalah null. Inilah yang akan dibaca oleh pengecualian:
Pengecualian di utas "utama" java.lang.NullPointerException
di IOExceptionExample.writeToFile(IOExceptionExample.java:10)
di IOExceptionExample.main(IOExceptionExample.java:17)
Kesimpulannya
Dengan itu, kita sampai di akhir blog ini tentang memahami Hirarki Pengecualian di Jawa. Harap diingat bahwa ini sama sekali bukan cakupan yang komprehensif dari Pengecualian di Jawa dan bagaimana cara menanganinya. Untuk itu, Anda harus menggali lebih dalam dan memaparkan diri Anda pada berbagai kemungkinan Pengecualian untuk melihat cara kerjanya. Mengetahui Penanganan Pengecualian akan menyiapkan Anda untuk karier yang sukses sebagai pengembang full-stack karena Pengecualian membentuk dasar-dasar aplikasi apa pun.
Di upGrad, kami memiliki kursus pengembangan tumpukan penuh khusus – Program PG Eksekutif dalam Pengembangan Perangkat Lunak – Spesialisasi dalam Pengembangan Tumpukan Penuh – di mana kami membawa Anda melalui semua nuansa pengembangan perangkat lunak dengan fokus utama pada pengembangan Tumpukan Penuh. Kami sarankan Anda memeriksa kursus dan mungkin segera memesan tempat duduk!
1. Kelas mana yang ada di bagian atas Hirarki Pengecualian di Jawa?
Kelas Throwable berada di bagian atas Hirarki Pengecualian di Jawa.
2. Apa saja jenis Exception yang ada di Java?
Java memiliki pengecualian yang tidak dicentang dan dicentang. Pengecualian yang Dicentang juga disebut pengecualian waktu kompilasi, sedangkan Pengecualian Tidak Dicentang juga dikenal sebagai pengecualian runtime.
3. Bagaimana pengecualian ditangani di Jawa?
Try-catch adalah cara termudah untuk menangani Pengecualian di Java. Bagian utama dari kode yang ingin Anda jalankan harus diletakkan di blok try, sementara satu atau lebih blok catch akan menangkap semua pengecualian yang dilemparkan oleh kode. Metode ini akan mendeteksi semua jenis pengecualian Java yang dilemparkan.