Saya agak tidak setuju dengan pengembang yang lebih berpengalaman tentang masalah ini, dan bertanya-tanya apa pendapat orang lain tentang hal itu; lingkungan kita adalah Java, EJB 3, layanan, dll.
Kode yang saya tulis memanggil layanan untuk mendapatkan sesuatu dan untuk membuat sesuatu. Masalah yang saya temui adalah bahwa saya mendapat pengecualian null pointer yang tidak masuk akal. Misalnya, ketika saya meminta layanan untuk membuat objek, saya mendapatkan null kembali; ketika saya mencoba mencari objek dengan ID valid yang diketahui, saya mendapatkan null kembali. Saya menghabiskan beberapa waktu untuk mencari tahu apa yang salah dalam kode saya; karena saya kurang berpengalaman, saya biasanya berasumsi saya telah melakukan sesuatu yang salah, tetapi ternyata alasan pengembalian nol adalah keamanan. Jika prinsipal pengguna menggunakan layanan saya tidak memiliki izin yang tepat untuk layanan target, maka itu hanya mengembalikan nol. Sebagian besar layanan lain di sini juga tidak didokumentasikan dengan baik, jadi sepertinya ini hanya sesuatu yang harus Anda ketahui.
Ini agak membingungkan karena pengembang menulis kode yang berinteraksi dengan layanan. Akan jauh lebih masuk akal bagi saya jika layanan mencabut pengecualian yang akan memberi tahu saya bahwa pengguna tidak memiliki izin yang tepat untuk memuat hal ini atau untuk membuat hal itu; Saya kemudian akan segera tahu mengapa layanan saya tidak berfungsi seperti yang diharapkan.
Pengembang yang lebih berpengalaman yang menulis layanan berpendapat bahwa meminta data bukan kondisi kesalahan, dan bahwa pengecualian hanya boleh dilemparkan dalam kondisi kesalahan, bukan ketika pengguna tidak memiliki akses ke data. Data ini sering dicari dalam GUI, dan bagi pengguna tanpa izin yang tepat, hal-hal ini "tidak ada". Jadi, singkatnya: bertanya itu tidak salah, maka tidak terkecuali. Dapatkan metode mengembalikan nol karena bagi pengguna itu hal-hal "tidak ada". Buat metode mengembalikan nol ketika pengguna tidak diizinkan untuk membuat hal itu.
Apakah ini normal dan / atau praktik yang baik? Saya lebih suka menggunakan pengecualian karena saya merasa lebih mudah untuk mengetahui apa yang terjadi. Jadi saya akan misalnya juga lebih suka melempar NotFoundException jika Anda meminta objek dengan ID yang tidak valid, daripada mengembalikan nol.