Pengecualian Diperiksa vs Pengecualian Runtime
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 melintasinya dalam urutan terbalik (di mana metode dipanggil). Sistem runtime berhasil jika menemukan metode dengan penangan pengecualian. Pengendali pengecualian 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 kompiler. Pengecualian runtime adalah jenis pengecualian, yang tidak diperiksa oleh kompiler.
Apa itu Pengecualian yang Dicentang?
Checked Exceptions adalah objek dari class java.lang.exception atau subclass-nya (kecuali java.lang. RuntimeException dan subclass-nya). Pengecualian yang diperiksa "diperiksa" pada waktu kompilasi. Itu berarti programmer harus menangkap atau membuang pengecualian ini, atau kompilasi akan mengeluh (menyebabkan kesalahan kompiler). Karena alasan ini, banyak pengecualian yang diperiksa sangat dikenal oleh programmer. Misalnya, IOException dan sub-kelasnya diperiksa pengecualian, dan setiap kali programmer berurusan dengan mengakses atau memodifikasi file, compiler memeriksa untuk memastikan bahwa semua kemungkinan IOExceptions ditangani oleh programmer.
Apa itu Pengecualian Waktu Proses?
Runtime Exceptions terdiri dari java.lang. RuntimeException dan semua sub-kelasnya. Secara teoritis, mereka melayani tujuan yang sama seperti pengecualian yang diperiksa, dan dapat dilemparkan atau ditangani seperti pengecualian yang diperiksa, tetapi penanganannya tidak ditegakkan oleh kompiler. Oleh karena itu, pengecualian Runtime milik keluarga pengecualian yang tidak dicentang. NullPointerException, NumberFormatEception, ClassCastException dan ArrayIndexOutOfBoundsException adalah pengecualian runtime yang umum di Java.
Apa perbedaan antara Pengecualian yang Diperiksa dan Pengecualian Runtime?
Meskipun, pengecualian yang diperiksa dan pengecualian runtime adalah kejadian yang tidak diinginkan selama eksekusi program, mereka memiliki perbedaan. Penanganan pengecualian yang diperiksa diberlakukan oleh kompiler, tetapi pengecualian runtime tidak. Oleh karena itu, pengecualian yang diperiksa harus dibuang atau ditangani agar kode dapat dikompilasi, tetapi tidak ada persyaratan seperti itu terkait pengecualian runtime. Akibatnya, pengecualian runtime termasuk dalam kategori pengecualian yang tidak dicentang bersama dengan kesalahan.
Kerugian dengan pengecualian yang diperiksa adalah bahwa programmer harus menanganinya bahkan jika dia tidak tahu caranya. Jadi, jika programmer hanya melempar pengecualian baru tanpa membungkus yang asli, jejak 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 diperiksa harus ditangkap, tidak ada kejutan bagi programmer. Dia akan selalu tahu pengecualian mana yang dapat dilempar dengan metode tertentu. Bertentangan dengan ini, berbagai pengecualian runtime dapat dilempar tanpa sepengetahuan programmer.