Saya pikir faktor penting adalah siapa klien layanan Anda.
Jika lapisan layanan Anda hanyalah batas arsitektural antara lapisan dalam proyek Anda sendiri, dan klien layanan berada dalam bidang kepercayaan yang sama, maka ok saja untuk bersantai, dan biarkan pengecualian yang tidak dicentang muncul ke lapisan pengontrol, atau klien layanan.
Namun, untuk kode yang dihadapi publik; layanan yang dikonsumsi oleh pihak ketiga atau pelanggan, saya pikir lebih baik untuk membungkus pengecualian yang tidak dicentang dengan pengecualian berorientasi layanan, terutama untuk masalah keamanan, kedua untuk kopling longgar, dan abstraksi bersih.
Pengecualian lapisan data tidak boleh, secara langsung membuatnya sampai ke pengguna akhir dari aplikasi web . Ini berpotensi berisi informasi internal tentang skema Anda, pertanyaan Anda, informasi nomor baris, nama variabel atau fungsi, dll. Pengecualian pengguna akhir dapat disanitasi dalam pengaturan yang aman.
Klien layanan eksternal tidak mementingkan detail implementasi Anda, dan toh tidak dapat menangani pengecualian yang tidak dicentang, karena mereka adalah bug atau masalah lingkungan. Dalam aplikasi yang aman, kesalahan database tidak cukup aman untuk disebarkan, OracleException - ORA-01234 - ...
yang mungkin merupakan tabel ke-3 yang dimasukkan. Klien harus diizinkan untuk berurusan dengan pengecualian yang dicek / diharapkan yang dapat ditangani, dan memperlakukan yang lainnya sebagai laporan bug yang potensial. Kontrak layanan Anda harus berupa abstraksi atom, konsisten, transaksional. Jika tidak dapat melakukan apa-apa tentang pengecualian, maka satu-satunya hal berguna yang tersisa adalah memberi Anda laporan bug. Anda sudah memiliki kemampuan untuk mencatat pengecualian, jadi mengapa membebani pengguna akhir Anda dengan detailnya? Aplikasi Anda dapat dipantau sehingga Anda sudah tahu tentang pengecualian yang tidak dicentang sebelum pengguna melaporkannya.
Tidak pernah ok untuk makan pengecualian, saya juga bukan penggemar pengecualian yang diperiksa, tetapi saya lebih suka memiliki rencana yang sesuai untuk sifat keseluruhan produk.