Pengecualian yang diperiksa vs Pengecualian Runtime
Pengecualian adalah jenis peristiwa khas, yang boleh mengganggu aliran program biasa. Pengecualian nama datang dari "Acara Luar Biasa". Membuang pengecualian adalah proses membuat objek pengecualian dan menyerahkannya ke sistem runtime. Apabila sistem runtime menerima objek pengecualian, ia akan cuba mencari seseorang untuk mengendalikannya dalam timbunan panggilan dengan melintasinya dalam urutan terbalik (di mana kaedah dipanggil). Sistem runtime berjaya jika ia mencari kaedah dengan pengendali pengecualian. Pengendali Pengecualian adalah blok kod yang secara rasmi boleh mengendalikan pengecualian tersebut. Sekiranya sistem runtime menemui pengendali yang sesuai, ia akan lulus objek pengecualian kepada pengendali. Ini dipanggil menangkap pengecualian. Walau bagaimanapun, jika pengecualian tidak dapat dikendalikan, program akan ditamatkan. Di Jawa, pengecualian mewarisi dari kelas yang boleh dibuang. Pengecualian yang diperiksa adalah pengecualian di mana pengendalian dikuatkuasakan oleh pengkompil. Pengecualian runtime adalah jenis pengecualian, yang tidak diperiksa oleh pengkompil.
Apakah pengecualian yang diperiksa?
Pengecualian diperiksa sama ada objek java kelas.lang.pengecualian atau subkelasnya (kecuali java.lang.RuntimeException dan subkelasnya). Pengecualian diperiksa "diperiksa" pada masa penyusunan. Ini bermakna pengaturcara mestilah menangkap atau membuang pengecualian ini, atau kompilasi akan mengadu (menyebabkan ralat pengkompil). Kerana sebab ini, banyak pengecualian yang diperiksa sangat terkenal dengan pengaturcara. Sebagai contoh, IOException dan kelas subnya diperiksa pengecualian, dan apabila pengaturcara berhadapan dengan mengakses atau mengubah suai fail, pemeriksaan pengkompil untuk memastikan bahawa semua kemungkinan ioexceptions dijaga oleh pengaturcara.
Apa itu pengecualian runtime?
Pengecualian runtime terdiri daripada Java.lang.RuntimeException dan semua kelas subnya. Secara teorinya, mereka melayani tujuan yang sama seperti pengecualian yang diperiksa, dan boleh dibuang atau dikendalikan seperti pengecualian yang diperiksa, tetapi pengendaliannya tidak dikuatkuasakan oleh pengkompil. Oleh itu, pengecualian runtime tergolong dalam keluarga pengecualian yang tidak terkawal. NullPointerException, NumberFormateCeption, ClassCastException dan ArrayIndexOutOfBoundSexcepti.
Apakah perbezaan antara pengecualian yang diperiksa dan pengecualian runtime?
Walaupun, kedua -dua pengecualian yang diperiksa dan pengecualian runtime adalah kejadian yang tidak diingini semasa pelaksanaan program, mereka mempunyai perbezaan mereka. Pengendalian pengecualian diperiksa dikuatkuasakan oleh pengkompil, tetapi pengecualian runtime tidak. Oleh itu, pengecualian yang diperiksa mesti dilemparkan atau dikendalikan agar kod tersebut dikompilasi, tetapi tidak ada keperluan sedemikian mengenai pengecualian runtime. Oleh itu, pengecualian runtime tergolong dalam kategori pengecualian yang tidak terkawal bersama dengan kesilapan.
Kelemahan dengan pengecualian yang diperiksa adalah bahawa pengaturcara harus mengendalikannya walaupun dia tidak tahu bagaimana. Oleh itu, jika pengaturcara hanya membuang pengecualian baru tanpa membungkus asal, jejak timbunan yang dimiliki oleh pengecualian asal akan hilang. Di sinilah pengecualian runtime berguna. Kerana semua pengecualian runtime dapat dikendalikan di satu tempat, oleh itu pengaturcara dapat menulis lebih sedikit kod. Sebaliknya, sejak pengecualian diperiksa mesti ditangkap, tidak ada kejutan bagi pengaturcara. Dia akan selalu tahu pengecualian yang diperiksa dapat dilemparkan dengan kaedah tertentu. Bertentangan dengan ini, pelbagai pengecualian runtime dapat dilemparkan tanpa pengetahuan pengaturcara.