Pengecualian Terkecuali Pengecualian Runtime
Pengecualian adalah jenis acara khusus, yang dapat mengganggu aliran program normal. Pengecualian nama berasal dari "peristiwa luar biasa". Melempar pengecualian adalah proses menciptakan objek pengecualian dan menyerahkannya ke sistem runtime. Ketika sistem runtime menerima objek pengecualian, itu akan mencoba untuk menemukan seseorang untuk menanganinya di dalam tumpukan panggilan dengan melintasi itu dalam urutan terbalik (di mana metode dipanggil). Sistem runtime berhasil jika menemukan metode dengan handler pengecualian. Handler 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 berakhir. Di Jawa, pengecualian diturunkan dari kelas Throwable. Pengecualian yang Diperiksa adalah pengecualian yang penanganannya ditegakkan oleh kompiler. Pengecualian runtime adalah jenis pengecualian, yang tidak diperiksa oleh kompiler.
Apa itu Pengecualian yang Dicentang?
Pengecualian yang dicentang adalah objek dari java.lang.exception kelas atau subkelasnya (kecuali java.lang.RuntimeException dan subkelasnya). Pengecualian yang diperiksa "diperiksa" pada waktu kompilasi. Itu berarti programmer harus menangkap atau melempar pengecualian ini, atau kompilasi akan mengeluh (menyebabkan kesalahan kompilator). Karena alasan ini, banyak pengecualian yang diperiksa sangat dikenal oleh para programmer. Sebagai contoh, IOException dan sub-kelasnya diperiksa pengecualian, dan setiap kali programmer berurusan dengan mengakses atau memodifikasi file, compiler akan memeriksa untuk memastikan bahwa semua kemungkinan IOExceptions diurus oleh programmer.
Apa itu Pengecualian Runtime?
Pengecualian Runtime terdiri dari java.lang.RuntimeException dan semua sub kelasnya. Secara teoritis, mereka melayani tujuan yang sama dengan pengecualian diperiksa, dan dapat dilempar atau ditangani seperti pengecualian diperiksa, tetapi penanganannya tidak ditegakkan oleh kompiler. Oleh karena itu, pengecualian Runtime termasuk dalam keluarga pengecualian yang tidak dicentang. NullPointerException, NumberFormatEception, ClassCastException dan ArrayIndexOutOfBoundsException adalah pengecualian runtime umum di Jawa.
Apa perbedaan antara Pengecualian Tercatat dan Pengecualian Runtime?
Meskipun, keduanya mengecek pengecualian dan pengecualian runtime adalah kejadian yang tidak diinginkan selama eksekusi suatu program, mereka memiliki perbedaannya. Penanganan pengecualian yang diperiksa ditegakkan oleh kompiler, tetapi pengecualian runtime tidak. Oleh karena itu, pengecualian yang dicek harus dilempar atau ditangani agar kode dapat dikompilasi, tetapi tidak ada persyaratan seperti itu mengenai pengecualian runtime. Akibatnya, pengecualian runtime termasuk dalam kategori pengecualian yang tidak dicentang beserta kesalahannya.
Kerugian dengan pengecualian yang diperiksa adalah bahwa programmer harus menanganinya walaupun dia tidak tahu caranya. Jadi, jika programmer hanya melempar pengecualian baru tanpa membungkus aslinya, jejak tumpukan milik pengecualian asli akan hilang. Di sinilah pengecualian runtime berguna. Karena semua pengecualian runtime dapat ditangani di satu tempat, maka programmer dapat menulis lebih sedikit jumlah kode. Di sisi lain, karena pengecualian yang diperiksa harus ditangkap, tidak ada kejutan bagi programmer. Dia akan selalu tahu pengecualian yang diperiksa dapat dilemparkan dengan metode tertentu. Berlawanan dengan ini, berbagai pengecualian runtime dapat dilempar tanpa sepengetahuan programmer.