Perbezaan Antara Pengecualian Diperiksa dan Pengecualian Runtime

Anonim

Pengecualian Terperinci vs Pengecualian Runtime

Pengecualian adalah jenis peristiwa khas, yang boleh mengganggu aliran program biasa. Pengecualian nama berasal dari "peristiwa luar biasa". Membuang pengecualian adalah proses membuat objek pengecualian dan menyerahkannya kepada 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 mendapati satu kaedah dengan pengecualian pengecualian. Pengendali pengecualian merupakan blok kod yang secara rasmi dapat menangani pengecualian tersebut. Jika sistem runtime mendapati pengendali yang sesuai, ia akan menyerahkan objek pengecualian kepada pengendali. Ini dipanggil menangkap pengecualian. Walau bagaimanapun, jika pengecualian tidak dapat dikendalikan, program akan ditamatkan. Di Jawa, pengecualian mewarisi dari kelas Throwable. Pengecualian yang diperiksa adalah pengecualian di mana pengendalian dikuatkuasakan oleh pengkompil. Pengecualian tetapan adalah jenis pengecualian, yang tidak diperiksa oleh pengkompil.

Apakah Pengecualian Diperiksa?

Pengecualian diperiksa sama ada objek java kelas. lang. pengecualian atau subclassnya (kecuali java.lang.RuntimeException dan subclassnya). Pengecualian yang diperiksa adalah "diperiksa" pada masa penyusunan. Ini bermakna programmer mesti sama ada menangkap atau membuang pengecualian ini, atau penyusunnya akan mengadu (menyebabkan ralat pengkompil). Oleh sebab itu, banyak pengecualian pengecualian sangat terkenal dengan pengaturcara. Sebagai contoh, IOException dan kelas subnya disemak pengecualian, dan apabila programmer berurusan dengan mengakses atau mengubah suai fail, pemeriksa pengkompil untuk memastikan semua IOExceptions yang mungkin dijaga oleh programmer.

Apakah Pengecualian Runtime?

Pengecualian Runtime terdiri daripada java. lang. RuntimeException dan semua kelasnya. Secara teori, mereka berkhidmat dengan tujuan yang sama seperti pengecualian yang diperiksa, dan boleh dilemparkan atau dikendalikan seperti pengecualian diperiksa, tetapi pengendaliannya tidak dikuatkuasakan oleh pengkompil. Oleh itu, pengecualian Runtime tergolong dalam keluarga pengecualian yang tidak terkawal. NullPointerException, NumberFormatEception, ClassCastException dan ArrayIndexOutOfBoundsException adalah pengecualian runtime biasa di Jawa.

Apakah perbezaan antara Pengecualian Diperiksa dan Pengecualian Runtime?

Walaupun, kedua pengecualian pengecualian dan pengecualian runtime adalah kejadian yang tidak diingini semasa pelaksanaan program, mereka mempunyai perbedaan. Pengecualian pengecualian diperiksa dikuatkuasakan oleh pengkompil, tetapi pengecualian runtime tidak.Oleh itu, pengecualian yang diperiksa mestilah dilemparkan atau dikendalikan supaya kod itu dapat disusun, tetapi tidak ada keperluan seperti mengenai pengecualian runtime. Oleh itu, pengecualian runtime tergolong dalam kategori pengecualian yang tidak ditandatangani bersama dengan ralat.

Kelemahan dengan pengecualian yang diperiksa ialah pemrogram perlu mengendalikannya walaupun dia tidak tahu bagaimana untuk melakukannya. Jadi, jika pengaturcara hanya melemparkan pengecualian baru tanpa membungkus asal, jejak tindanan milik pengecualian asal akan hilang. Ini adalah di mana pengecualian runtime berguna. Kerana semua pengecualian runtime dapat dikendalikan di satu tempat, maka programmer dapat menulis sedikit jumlah kode. Sebaliknya, sejak pengecualian diperiksa mesti ditangkap, tidak ada kejutan bagi pengaturcara. Dia akan sentiasa tahu pengecualian yang diperiksa boleh dibuang dengan kaedah tertentu. Bertentangan dengan ini, pelbagai pengecualian runtime boleh dibuang tanpa pengetahuan pengaturcara.