"Throwable" adalah kelas induk dari kelas Error and Exception. Kelas "RuntimeException" dan subkelasnya, kelas "Kesalahan" dan kelas anaknya adalah "Pengecualian yang tidak dicentang" sedangkan, subkelas yang tersisa dari kelas "Pengecualian" kecuali "RuntimeException" adalah pengecualian yang dicentang. Perbedaan mendasar antara pengecualian dicentang dan tidak dicentang adalah bahwa pengecualian diperiksa diperiksa oleh kompiler sedangkan, kompiler tidak memeriksa pengecualian tidak dicentang .
Mari kita bahas perbedaan lain antara pengecualian yang diperiksa dan yang tidak dicentang dengan bantuan bagan perbandingan.
Grafik perbandingan
Dasar untuk Perbandingan | Pengecualian Diperiksa | Pengecualian tidak dicentang |
---|---|---|
Dasar | Kompiler memeriksa pengecualian yang dicentang. | Kompiler tidak memeriksa pengecualian yang tidak dicentang. |
Kelas Pengecualian | Kecuali kelas "RuntimeException" semua kelas anak dari kelas "Pengecualian", dan kelas "Kesalahan" dan kelas anaknya dicek Pengecualian. | Kelas "RuntimeException" dan kelas anaknya, adalah "Pengecualian Tidak Dicentang". |
Penanganan | Jika kami tidak menangani pengecualian yang dicentang, maka objek kompiler. | Bahkan jika kita tidak menangani pengecualian yang tidak dicentang, kompiler tidak keberatan. |
Kompilasi | Program tidak mengkompilasi jika ada pengecualian diperiksa tidak tertangani dalam kode program. | Program mengkompilasi dengan sukses bahkan jika ada pengecualian tidak tertangani dalam kode program. |
Definisi Pengecualian yang Diperiksa
Pengecualian yang diperiksa adalah pengecualian yang diperiksa oleh kompiler untuk kelancaran pelaksanaan program. Compiler memeriksa apakah program dapat menangani pengecualian yang diperiksa atau tidak. Jika kode tidak dapat menangani pengecualian ada kesalahan kompilasi. Semua subclass dari kelas "Pengecualian" kecuali kelas RuntimeException adalah pengecualian yang diperiksa.
Mari kita pelajari pengecualian yang dicentang dengan sebuah contoh.
import java.io. *; Contoh kelas {public static void main (String args []) {FileInputStream fis = null; fis = FileInputStream baru ("B: /myfile.txt"); // Konstruktor ini FileInputStream (nama file File) melempar FileNotFoundException yang merupakan pengecualian diperiksa. int k; while ((k = fis.read ())! = -1) {// Metode baca () dari kelas FileInputStream juga melempar pengecualian yang diperiksa: IOException. System.out.print ((char) k); } fis.close (); // Metode close () menutup aliran input file yang dilemparkannya ke IOException. }}
Dalam kode di atas, kami mencoba membuka, membaca, dan menampilkan konten file. Mungkin saja file tersebut tidak ada, maka FileNotFoundException akan muncul yang merupakan pengecualian yang diperiksa. Jika pengecualian yang diperiksa tidak ditangani, maka kompiler tidak akan membiarkan program dikompilasi dengan lancar. Ini akan menampilkan kesalahan waktu kompilasi. Jadi, untuk kompilasi yang lancar, pengecualian yang diperiksa harus ditangkap atau dinyatakan dibuang.
Definisi Pengecualian yang Tidak Dicentang
Pengecualian yang Tidak Dicentang adalah pengecualian yang tidak diperiksa oleh kompiler. Kompiler mengkompilasi program dengan sukses bahkan jika pengecualian tidak ditangani oleh kode. Kelas "Kesalahan" dan kelas anaknya, kelas "Runtime" dan subkelasnya adalah pengecualian yang tidak dicentang.
Mari kita lihat contoh pengecualian yang tidak dicentang.
Contoh kelas {public static void main (String args []) {int arr [] = {1, 2, 3, 4, 5}; System.out.println (arr [7]); // ArrayIndexOutOfBoundsException. }}
Dalam kode di atas, Anda dapat melihat bahwa ada ArrayIndexOutOfBoundsException, karena saya mencoba mengakses elemen yang tidak ada. Karena ini adalah pengecualian yang tidak dicentang, kesalahan waktu kompilasi tidak akan terjadi, dan file akan dikompilasi tanpa kesalahan. Tetapi program tidak akan mengeksekusi sampai pengecualian ditangani. Jadi, untuk kelancaran eksekusi, pengecualian harus ditangkap atau dinyatakan dibuang
Perbedaan Kunci Antara Pengecualian yang Dicentang dan Tidak Dicentang
- Pengecualian diperiksa dalam pengetahuan tentang kompiler sedangkan, Pengecualian tidak dicentang tidak dalam pengetahuan tentang kompiler.
- Kecuali kelas RuntimeException dan Error, semua kelas diperiksa kecuali. Di sisi lain, kelas RuntimeException dan Error adalah pengecualian yang tidak dicentang.
- Jika pengecualian yang diperiksa tidak ditangani oleh kode maka objek kompiler. Di sisi lain, jika kita tidak menangani pengecualian yang tidak dicentang dalam kode, kompiler tidak keberatan.
- Jika pengecualian yang dicentang terjadi dalam kode, kode tidak akan mengkompilasi sedangkan, meskipun pengecualian yang tidak dicentang tidak ditangani oleh kode, kompiler masih mengkompilasi kode.
Catatan :
Baik pengecualian yang diperiksa atau tidak dicentang secara wajib terjadi selama runtime. Mereka hanya diperiksa atau tidak dicentang oleh kompiler selama waktu kompilasi.
Kesimpulan:
Pengecualian yang dicentang dan tidak dicentang harus ditangani untuk menjalankan program dengan lancar.