Menu Close

Perbedaan antara Pengecualian yang Dicentang dan Tidak Dicentang

Apa pengecualian yang dicentang dan tidak dicentang? Mereka adalah dua jenis pengecualian di Jawa. Pengecualian pemeriksaan adalah pengecualian yang harus ditangani oleh suatu program; jika tidak ditangani, program akan dibatalkan. Pengecualian yang tidak dicentang adalah pengecualian yang tidak harus ditangani; jika tidak ditangani, program akan melanjutkan eksekusi dengan apapun yang terjadi pada objek yang dilempar. Pengecualian yang tidak dicentang biasanya merupakan kesalahan pemrograman. Mari kita lihat lebih dekat kedua jenis pengecualian ini.

Apa itu Pengecualian yang Dicentang?

Pengecualian yang Dicentang adalah yang harus ditangani oleh programmer. Mereka adalah subclass dari Pengecualian. Checked Pengecualian diperiksa pada waktu kompilasi. Pengecualian yang Dicentang harus ditangani oleh program atau program tidak dapat dikompilasi. Pengecualian yang Dicentang termasuk IOException dan SQLException dll.

  • Checked Exception memaksa programmer untuk menanganinya menggunakan blok try-catch atau mendeklarasikannya menggunakan kata kunci throws. Pengecualian yang Dicentang tidak boleh diabaikan pada waktu kompilasi karena mungkin terjadi saat runtime. Pengecualian yang Dicentang mewakili beberapa kondisi yang dapat dipulihkan dan karenanya diperiksa oleh kompiler.
  • Pengecualian yang Dicentang diketahui oleh programmer karena mungkin terjadi saat dia menulis kode. Misalnya, FileNotFoundException adalah pengecualian yang diperiksa dan terjadi saat mencoba mengakses file yang tidak ada. Kompiler memaksa pemrogram untuk menangkap pengecualian ini atau mendeklarasikannya menggunakan kata kunci throws sehingga penelepon metode mengetahui tentang pengecualian ini.
  • Pengecualian yang Dicentang juga disebut Pengecualian Waktu Kompilasi. Tidak ada gunanya menangani pengecualian yang tidak dicentang karena ini mewakili kondisi yang tidak dapat dipulihkan seperti OutOfMemoryError, StackOverflowError, dll yang terjadi karena kesalahan pemrograman atau penggunaan API yang salah.

Selain dari dua jenis pengecualian ini, ada jenis pengecualian lain yang dikenal sebagai Kesalahan yang mewakili kesalahan sistem yang tidak dapat dipulihkan seperti kesalahan mesin virtual, kegagalan perangkat keras, dll. Kita tidak boleh mencoba menangani Kesalahan karena ini merupakan masalah serius dalam aplikasi kita seperti kecelakaan JVM dan kita harus membiarkan sistem kita menanganinya.

Apa itu Pengecualian yang Tidak Dicentang?

Pengecualian yang tidak dicentang adalah yang memperluas kelas RuntimeException. Ini termasuk bug pemrograman, seperti kesalahan logis atau penggunaan API yang tidak tepat. Pengecualian yang tidak dicentang tidak perlu dideklarasikan dalam metode atau klausa throws konstruktor jika dapat ditangani secara lokal, tetapi dianggap sebagai praktik yang baik untuk melakukannya.

Ketika pengecualian yang tidak dicentang dilemparkan, program akan berhenti dan mencetak pesan kesalahan. Ini bisa membuat frustasi bagi pengguna, jadi penting untuk memperbaiki bug apa pun yang dapat menyebabkan pengecualian yang tidak dicentang dilemparkan. Secara umum, pengecualian yang tidak dicentang harus dihindari, karena dapat menyebabkan perilaku yang tidak terduga dan menyulitkan untuk men-debug program.

Perbedaan antara Pengecualian yang Dicentang dan Tidak Dicentang

Pengecualian yang dicentang dan tidak dicentang adalah dua jenis kondisi kesalahan yang dapat terjadi dalam program Java.

  • Pengecualian yang diperiksa biasanya disebabkan oleh faktor eksternal, seperti file tidak ditemukan atau koneksi jaringan tidak tersedia.
  • Jenis pengecualian ini harus ditangani oleh program, baik dengan menangkapnya atau mendeklarasikannya di klausa throws dari suatu metode.
  • Pengecualian yang tidak dicentang, di sisi lain, biasanya disebabkan oleh kesalahan pemrograman, seperti indeks di luar batas atau dereferensi penunjuk nol.
  • Jenis pengecualian ini tidak perlu ditangani secara eksplisit tetapi dapat ditangkap jika diinginkan.

Namun, pengecualian yang tidak dicentang akan menyebarkan tumpukan panggilan hingga tertangkap atau menyebabkan program berhenti.

Kesimpulan

Java menyediakan dua mekanisme penanganan pengecualian- pengecualian yang dicentang dan tidak dicentang. Perbedaan utama antara kedua jenis pengecualian ini adalah bahwa kompiler memeriksa kesalahan selama kompilasi jika Anda menggunakan pengecualian yang diperiksa, sementara itu tidak melakukannya untuk pengecualian yang tidak dicentang.

Perbedaan utama lainnya adalah bahwa kompiler memaksa Anda untuk menangani pengecualian yang diperiksa baik dengan menangkapnya atau mendeklarasikannya dalam klausa lemparan metode Anda. Pengecualian yang tidak dicentang secara otomatis dibungkus dalam RuntimeException dan karenanya tidak memiliki jaring pengaman ini. Anda umumnya harus menggunakan pengecualian yang tidak dicentang hanya jika Anda tahu tidak ada cara bagi pengguna untuk memulihkan dari kesalahan.