Perbezaan Antara Pengecualian Disemak dan Pengecualian Masa Jalan

Perbezaan Antara Pengecualian Disemak dan Pengecualian Masa Jalan
Perbezaan Antara Pengecualian Disemak dan Pengecualian Masa Jalan

Video: Perbezaan Antara Pengecualian Disemak dan Pengecualian Masa Jalan

Video: Perbezaan Antara Pengecualian Disemak dan Pengecualian Masa Jalan
Video: Gerakan Linear (Jarak, Sesaran, Laju, Halaju dan Pecutan) 2024, Julai
Anonim

Pengecualian Disemak lwn Pengecualian Masa Jalan

Pengecualian ialah jenis acara istimewa, yang boleh mengganggu aliran program biasa. Nama pengecualian berasal daripada "peristiwa luar biasa". Melontar pengecualian ialah proses mencipta objek pengecualian dan menyerahkannya kepada sistem masa jalan. Apabila sistem runtime menerima objek pengecualian, ia akan cuba mencari seseorang untuk mengendalikannya dalam timbunan panggilan dengan melintasinya dalam susunan terbalik (di mana kaedah dipanggil). Sistem runtime berjaya jika ia menemui kaedah dengan pengendali pengecualian. Pengendali pengecualian ialah blok kod yang boleh mengendalikan pengecualian tersebut secara rasmi. Jika sistem runtime menemui 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 daripada kelas Throwable. Pengecualian yang Disemak adalah pengecualian yang pengendaliannya dikuatkuasakan oleh pengkompil. Pengecualian masa jalan ialah sejenis pengecualian, yang tidak disemak oleh pengkompil.

Apakah Pengecualian Disemak?

Checked Exceptions ialah sama ada objek kelas java.lang.exception atau subkelasnya (kecuali java.lang. RuntimeException dan subkelasnya). Pengecualian yang disemak "disemak" pada masa penyusunan. Ini bermakna pengaturcara mesti sama ada menangkap atau membuang pengecualian ini, atau penyusun akan mengadu (menyebabkan ralat pengkompil). Atas sebab ini, banyak pengecualian yang disemak sangat diketahui oleh pengaturcara. Sebagai contoh, IOException dan sub kelasnya disemak pengecualian, dan apabila pengaturcara berurusan dengan mengakses atau mengubah suai fail, pengkompil menyemak untuk memastikan semua kemungkinan IOExceptions dijaga oleh pengaturcara.

Apakah Pengecualian Masa Jalan?

Runtime Exceptions terdiri daripada java.lang. RuntimeException dan semua subkelasnya. Secara teorinya, ia mempunyai 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 disemak. NullPointerException, NumberFormatEception, ClassCastException dan ArrayIndexOutOfBoundsException ialah pengecualian masa jalan biasa dalam Java.

Apakah perbezaan antara Pengecualian Disemak dan Pengecualian Masa Jalan?

Walaupun, kedua-dua pengecualian yang diperiksa dan pengecualian masa jalan adalah kejadian yang tidak diingini semasa pelaksanaan program, ia mempunyai perbezaannya. Pengendalian pengecualian yang diperiksa dikuatkuasakan oleh pengkompil, tetapi pengecualian masa jalan tidak. Oleh itu, pengecualian yang disemak mesti dibuang atau dikendalikan agar kod itu disusun, tetapi tidak ada keperluan sedemikian berkenaan pengecualian masa jalan. Akibatnya, pengecualian masa jalan tergolong dalam kategori pengecualian tidak ditandai bersama-sama ralat.

Kelemahan dengan pengecualian yang diperiksa ialah pengaturcara perlu mengendalikannya walaupun dia tidak tahu bagaimana untuk melakukannya. Jadi, jika pengaturcara hanya melemparkan pengecualian baharu tanpa membungkus yang asal, surih tindanan kepunyaan pengecualian asal akan hilang. Di sinilah pengecualian masa jalan berguna. Oleh kerana semua pengecualian masa jalan boleh dikendalikan di satu tempat, oleh itu pengaturcara boleh menulis lebih sedikit jumlah kod. Sebaliknya, kerana pengecualian yang diperiksa mesti ditangkap, tidak ada kejutan untuk pengaturcara. Dia akan sentiasa tahu pengecualian yang diperiksa boleh dilemparkan dengan kaedah tertentu. Bertentangan dengan ini, pelbagai pengecualian masa jalan boleh dibuang tanpa pengetahuan pengaturcara.

Disyorkan: