Usaría el bloque try/catch cuando la ruta normal a través del código debería continuar sin errores, a menos que realmente existan algunas condiciones excepcionales, como que el servidor esté inactivo, que sus credenciales estén vencidas o sean incorrectas. No necesariamente lo usaría para manejar errores no excepcionales, digamos que el usuario actual no está en el rol correcto. Es decir, cuando razonablemente puede esperar y manejar un error que no es una condición excepcional, creo que debe hacer sus comprobaciones.
En el caso que describió:configurar y realizar una consulta, un bloque try/catch es una excelente manera de manejarlo, ya que normalmente espera que la consulta tenga éxito. Por otro lado, probablemente querrá verificar que el contenido de result sea lo que espera con la lógica de flujo de control en lugar de simplemente intentar usar datos que pueden no ser válidos para su propósito.
Una cosa que debes tener en cuenta es el uso descuidado de try/catch. Try/catch no debe usarse para protegerse de una mala programación:el tipo "No sé qué pasará si hago esto, así que voy a envolverlo en try/catch y esperar lo mejor". de programacion Por lo general, querrá restringir los tipos de excepciones que detecta a aquellas que no están relacionadas con el código en sí (servidor inactivo, malas credenciales, etc.) para que pueda encontrar y corregir errores relacionados con el código (punteros nulos, etc. .).