Pengecualian yang Dicentang vs Pengecualian Waktu Proses
Pengecualian adalah jenis acara khusus, yang dapat mengganggu aliran program normal. Pengecualian nama berasal dari "peristiwa luar biasa". Melempar pengecualian adalah proses membuat objek pengecualian dan menyerahkannya ke sistem runtime. Ketika sistem runtime menerima objek pengecualian, ia akan mencoba menemukan seseorang untuk menanganinya di dalam tumpukan panggilan dengan melewatinya dalam urutan terbalik (di mana metode itu dipanggil). Sistem runtime berhasil jika menemukan metode dengan pengendali pengecualian. Exception handler adalah blok kode yang secara resmi dapat menangani pengecualian tersebut. Jika sistem runtime menemukan penangan yang sesuai, itu akan meneruskan objek pengecualian ke penangan. Ini disebut menangkap pengecualian. Namun, jika pengecualian tidak dapat ditangani, program akan dihentikan. Di Jawa,pengecualian mewarisi dari kelas Throwable. Pengecualian yang Dicentang adalah pengecualian yang penanganannya diterapkan oleh kompilator. Pengecualian waktu proses adalah jenis pengecualian, yang tidak diperiksa oleh kompilator.
Apa itu Pengecualian yang Dicentang?
Pengecualian yang Dicentang adalah objek kelas java.lang.exception atau subkelasnya (kecuali java.lang. RuntimeException dan subkelasnya). Pengecualian yang dicentang "dicentang" pada waktu kompilasi. Itu berarti programmer harus menangkap atau membuang pengecualian ini, atau kompilasi akan mengeluh (menyebabkan kesalahan kompilator). Karena alasan ini, banyak pengecualian yang dicentang sangat dikenal oleh pemrogram. Sebagai contoh, IOException dan sub kelasnya diperiksa pengecualiannya, dan setiap kali pemrogram berurusan dengan mengakses atau memodifikasi file, kompilator memeriksa untuk memastikan bahwa semua kemungkinan IOExceptions ditangani oleh pemrogram.
Apa itu Pengecualian Waktu Proses?
Pengecualian Runtime terdiri dari java.lang. RuntimeException dan semua sub kelasnya. Secara teoritis, mereka melayani tujuan yang sama seperti pengecualian yang diperiksa, dan dapat dilempar atau ditangani seperti pengecualian yang dicentang, tetapi penanganannya tidak diberlakukan oleh kompilator. Oleh karena itu, Runtime pengecualian menjadi milik keluarga pengecualian yang tidak dicentang. NullPointerException, NumberFormatEception, ClassCastException, dan ArrayIndexOutOfBoundsException adalah pengecualian waktu proses yang umum di Java.
Apa perbedaan antara Checked Exception dan Runtime Exception?
Meskipun, baik pengecualian yang dicentang maupun pengecualian waktu proses adalah kejadian yang tidak diinginkan selama eksekusi program, keduanya memiliki perbedaan. Penanganan pengecualian yang dicentang diberlakukan oleh kompilator, tetapi pengecualian waktu proses tidak. Oleh karena itu, pengecualian yang dicentang harus dilempar atau ditangani agar kode dapat dikompilasi, tetapi tidak ada persyaratan terkait pengecualian waktu proses. Akibatnya, pengecualian waktu proses termasuk dalam kategori pengecualian yang tidak dicentang bersama dengan kesalahan.
Kerugian dengan pengecualian yang dicentang adalah programmer harus menanganinya bahkan jika dia tidak tahu caranya. Jadi, jika pemrogram hanya menampilkan pengecualian baru tanpa membungkus aslinya, pelacakan tumpukan milik pengecualian asli akan hilang. Di sinilah pengecualian runtime berguna. Karena semua pengecualian runtime dapat ditangani di satu tempat, sehingga programmer dapat menulis lebih sedikit kode. Di sisi lain, karena pengecualian yang dicentang harus ditangkap, tidak ada kejutan bagi programmer. Dia akan selalu tahu pengecualian mana yang dapat dilemparkan dengan metode tertentu. Bertentangan dengan ini, berbagai pengecualian waktu proses dapat diterapkan tanpa sepengetahuan programmer.