Dikecualikan Pengecualian vs Runtime Exception
Pengecualian adalah jenis acara khas, yang boleh mengganggu aliran program biasa. Pengecualian nama berasal dari "acara luar biasa". Membuang pengecualian adalah proses membuat objek pengecualian dan menyerahkannya ke sistem runtime. Apabila sistem runtime menerima objek pengecualian, ia akan berusaha mencari seseorang untuk menanganinya dalam timbunan panggilan dengan melintasi dalam urutan terbalik (di mana kaedah dipanggil). Sistem runtime berjaya jika menemui kaedah dengan pengendali pengecualian. Pengecualian pengecualian adalah sekumpulan kod yang dapat menangani pengecualian tersebut secara rasmi. Sekiranya sistem runtime menemui pengendali yang sesuai, ia akan menyerahkan objek pengecualian kepada pengendali. Ini dipanggil menangkap pengecualian. Namun, jika pengecualian tidak dapat ditangani, program akan dihentikan. Di Jawa,pengecualian diwarisi dari kelas Throwable. Pengecualian yang diperiksa adalah pengecualian di mana pengendalian diberlakukan oleh penyusun. Pengecualian waktu jalan adalah jenis pengecualian, yang tidak diperiksa oleh penyusun.
Apakah Pengecualian yang Diperiksa?
Pengecualian yang diperiksa adalah sama ada objek kelas java.lang.exception atau subkelasnya (kecuali java.lang. RuntimeException dan subkelasnya). Pengecualian yang diperiksa “diperiksa” pada waktu kompilasi. Ini bermaksud pengaturcara mesti menangkap atau membuang pengecualian ini, jika tidak, kompilasi akan mengadu (menyebabkan kesalahan penyusun). Kerana alasan ini, banyak pengecualian yang diperiksa sangat diketahui oleh pengaturcara. Sebagai contoh, IOException dan sub kelasnya diperiksa pengecualian, dan setiap kali pengaturcara berurusan dengan mengakses atau mengubah fail, penyusun memeriksa untuk memastikan bahawa semua kemungkinan pengecualian IOE dijaga oleh pengaturcara.
Apakah Pengecualian Runtime?
Pengecualian Runtime terdiri daripada java.lang. RuntimeException dan semua sub kelasnya. Secara teori, mereka melayani tujuan yang sama dengan pengecualian yang diperiksa, dan dapat dilemparkan atau ditangani seperti pengecualian yang diperiksa, tetapi pengendaliannya tidak diberlakukan oleh penyusun. Oleh itu, pengecualian Runtime adalah milik keluarga pengecualian yang tidak diperiksa. NullPointerException, NumberFormatEception, ClassCastException dan ArrayIndexOutOfBoundsException adalah pengecualian runtime biasa di Java.
Apakah perbezaan antara Pengecualian Tercatat dan Pengecualian Runtime?
Walaupun, pengecualian yang diperiksa dan pengecualian runtime adalah kejadian yang tidak diingini semasa pelaksanaan program, mereka mempunyai perbezaannya. Pengendalian pengecualian yang diperiksa dikuatkuasakan oleh penyusun, tetapi pengecualian waktu operasi tidak berlaku. Oleh itu, pengecualian yang diperiksa mesti dilemparkan atau ditangani agar kod dapat disusun, tetapi tidak ada syarat seperti itu mengenai pengecualian waktu proses. Oleh itu, pengecualian runtime termasuk dalam kategori pengecualian yang tidak dicentang bersama dengan kesalahan.
Kelemahan dengan pengecualian yang diperiksa adalah bahawa pengaturcara harus mengatasinya walaupun dia tidak tahu bagaimana. Oleh itu, jika pengaturcara melemparkan pengecualian baru tanpa membungkus yang asal, jejak timbunan kepunyaan pengecualian asal akan hilang. Di sinilah pengecualian runtime sangat berguna. Oleh kerana semua pengecualian runtime dapat dikendalikan dalam satu tempat, oleh itu pengaturcara dapat menulis lebih sedikit jumlah kod. Sebaliknya, kerana pengecualian yang diperiksa mesti ditangkap, tidak ada kejutan bagi pengaturcara. Dia akan selalu mengetahui pengecualian mana yang dapat dilemparkan dengan kaedah tertentu. Berbeza dengan ini, pelbagai pengecualian runtime dapat dilemparkan tanpa pengetahuan pengaturcara.