Pengecualian pengecualian vs runtime
Pengecualian adalah jenis acara khusus, yang dapat mengganggu aliran program normal. Pengecualian nama berasal dari "acara luar biasa". Melempar pengecualian adalah proses membuat objek pengecualian dan menyerahkannya ke sistem runtime. Ketika sistem runtime menerima objek pengecualian, ia akan mencoba menemukan seseorang untuk menanganinya di dalam tumpukan panggilan dengan melintasi dalam urutan terbalik (di mana metode dipanggil). Sistem runtime berhasil jika menemukan metode dengan penangan pengecualian. Exception Handler adalah blok kode yang secara resmi dapat menangani pengecualian tersebut. Jika sistem runtime menemukan penangan yang sesuai, itu akan meneruskan objek pengecualian ke pawang. Ini disebut menangkap pengecualian. Namun, jika pengecualian tidak dapat ditangani, program akan berakhir. Di Java, pengecualian mewarisi dari kelas yang dapat dilempar. Pengecualian diperiksa adalah pengecualian tentang penanganan mana yang ditegakkan oleh kompiler. Pengecualian runtime adalah jenis pengecualian, yang tidak diperiksa oleh kompiler.
Apa itu pengecualian yang diperiksa?
Pengecualian yang diperiksa adalah objek Java kelas.Lang.pengecualian atau subkelasnya (kecuali java.Lang.RuntimeeException dan subkelasnya). Pengecualian diperiksa "diperiksa" pada waktu kompilasi. Itu berarti programmer harus menangkap atau melempar pengecualian ini, atau kompilasi akan mengeluh (menyebabkan kesalahan kompiler). Karena alasan ini, banyak pengecualian yang diperiksa sangat terkenal dengan programmer. Misalnya, IOException dan sub -kelasnya diperiksa pengecualian, dan setiap kali programmer berurusan dengan mengakses atau memodifikasi file, pemeriksaan kompiler untuk memastikan bahwa semua kemungkinan IOExceptions dirawat oleh programmer oleh programmer.
Apa itu pengecualian runtime?
Pengecualian runtime terdiri dari java.Lang.RuntimeException dan semua sub -kelasnya. Secara teoritis, mereka melayani tujuan yang sama seperti pengecualian yang diperiksa, dan dapat dilemparkan atau ditangani seperti pengecualian yang diperiksa, tetapi penanganannya tidak ditegakkan oleh kompiler. Oleh karena itu, pengecualian runtime milik keluarga pengecualian yang tidak terkendali. NullpointerException, NumberFormateCeption, ClasscastException dan ArrayIndExoutOfBoundsException adalah pengecualian runtime umum di Java.
Apa perbedaan antara pengecualian yang diperiksa dan pengecualian runtime?
Meskipun, baik pengecualian yang diperiksa dan pengecualian runtime adalah kejadian yang tidak diinginkan selama pelaksanaan program, mereka memiliki perbedaan. Penanganan pengecualian diperiksa ditegakkan oleh kompiler, tetapi pengecualian runtime tidak. Oleh karena itu, pengecualian yang diperiksa harus dilemparkan atau ditangani agar kode tersebut dikompilasi, tetapi tidak ada persyaratan seperti itu mengenai pengecualian runtime. Akibatnya, pengecualian runtime termasuk dalam kategori pengecualian yang tidak dicentang bersama dengan kesalahan.
Kerugian dengan pengecualian yang diperiksa adalah bahwa programmer harus menanganinya bahkan jika dia tidak tahu bagaimana caranya. Jadi, jika programmer hanya melempar pengecualian baru tanpa membungkus yang asli, jejak tumpukan milik pengecualian asli akan hilang. Di sinilah pengecualian runtime berguna. Karena semua pengecualian runtime dapat ditangani di satu tempat, sehingga pemrogram dapat menulis lebih sedikit kode. Di sisi lain, karena pengecualian diperiksa harus ditangkap, tidak ada kejutan untuk programmer. Dia akan selalu tahu pengecualian yang diperiksa dapat dilemparkan dengan metode tertentu. Bertentangan dengan ini, berbagai pengecualian runtime dapat dilemparkan tanpa sepengetahuan programmer.