Saya akan menggunakan blok coba/tangkap ketika jalur normal melalui kode harus dilanjutkan tanpa kesalahan kecuali benar-benar ada beberapa kondisi luar biasa - seperti server sedang down, kredensial Anda kedaluwarsa atau salah. Saya tidak perlu menggunakannya untuk menangani kesalahan yang tidak luar biasa - katakan seperti pengguna saat ini tidak berada dalam peran yang benar. Artinya, ketika Anda dapat secara wajar mengharapkan dan menangani kesalahan yang bukan merupakan kondisi luar biasa, saya pikir Anda harus melakukan pemeriksaan.
Dalam kasus yang telah Anda jelaskan -- menyiapkan dan menjalankan kueri, blok coba/tangkap adalah cara terbaik untuk menanganinya seperti yang biasanya Anda harapkan kueri berhasil. Di sisi lain, Anda mungkin ingin memeriksa bahwa konten hasil adalah apa yang Anda harapkan dengan logika aliran kontrol daripada hanya mencoba menggunakan data yang mungkin tidak valid untuk tujuan Anda.
Satu hal yang ingin Anda perhatikan adalah penggunaan try/catch yang ceroboh. Coba/tangkap tidak boleh digunakan untuk melindungi diri Anda dari pemrograman yang buruk -- "Saya tidak tahu apa yang akan terjadi jika saya melakukan ini, jadi saya akan membungkusnya dengan coba/tangkap dan berharap yang terbaik" dari pemrograman. Biasanya Anda ingin membatasi jenis pengecualian yang Anda tangkap ke pengecualian yang tidak terkait dengan kode itu sendiri (server mati, kredensial buruk, dll.) sehingga Anda dapat menemukan dan memperbaiki kesalahan yang terkait kode (pointer nol, dll.) .).