8 poin oleh hongminhee 2025-03-21 | 1 komentar | Bagikan ke WhatsApp

Ringkasan poin utama

  • Checked exception di Java adalah fitur yang banyak dikritik di komunitas, tetapi memiliki keunggulan besar dari sisi keamanan tipe.
  • Secara konsep, fitur ini menyediakan mekanisme keamanan tipe yang mirip dengan Result<T, E> di Rust atau Either a b di Haskell.
  • Checked exception secara eksplisit menyatakan kemungkinan kegagalan dalam signature method, sehingga penanganan error dipaksa melalui sistem tipe.

Keunggulan checked exception

  • Memberikan keamanan tipe dengan memeriksa apakah exception ditangani pada saat kompilasi.
  • Menjadikan kemungkinan exception sebagai bagian dari kontrak API dengan menyatakannya secara eksplisit melalui klausa throws pada signature method.
  • Menyediakan mekanisme praktis di mana exception otomatis diteruskan hanya dengan deklarasi.
  • Tidak seperti Rust, tidak memerlukan sintaks tambahan seperti operator ? di setiap pemanggilan.

Masalah checked exception

  • Menimbulkan kode boilerplate yang berlebihan dalam call chain.
  • Kurang kompatibel dengan pemrograman fungsional seperti lambda dan Stream API yang diperkenalkan sejak Java 8.
  • Sulit mengembangkan API karena penambahan exception baru ke interface dapat merusak kompatibilitas.
  • Dapat mendorong anti-pola berupa pengabaian exception.

Usulan perbaikan

  • Memperbaiki functional interface agar lambda dapat mendeklarasikan checked exception.
  • Menambahkan dukungan tipe exception generik pada klausa throws.
  • Memperluas API agar checked exception dapat ditangani lebih baik dalam konteks fungsional.
  • Integrasi yang lebih baik dengan API Optional<T> dan Stream<T>.

Perbandingan dengan bahasa lain

  • Rust: menyediakan mekanisme penanganan error eksplisit melalui Result<T, E> dan operator ?.
  • Kotlin: menjadikan semua exception sebagai unchecked, tetapi menyediakan struktur fungsional seperti runCatching.
  • Scala: mendukung penanganan error fungsional melalui tipe monadik seperti Try[T] dan Either[A, B].

Kesimpulan

  • Checked exception adalah fitur inovatif Java yang sering disalahpahami dan perlu dievaluasi kembali.
  • Daripada ditinggalkan sepenuhnya, lebih baik fitur ini diperbaiki agar selaras dengan fitur Java modern.
  • Ada peluang untuk berkembang ke arah penyelesaian masalah praktis sambil mempertahankan paradigma yang ada.
  • Penting untuk menemukan titik keseimbangan antara keamanan tipe, keringkasan kode, dan fleksibilitas.

1 komentar

 
roxie 2025-03-28

Rasanya seperti mengulang perdebatan yang sudah dibicarakan selama belasan tahun. Ini terdengar seperti argumen bahwa Exception punya nilai setara dengan Type, dan saya ingin mencoba menjawab bahwa Type saja sudah cukup.