J'aimerais utiliser le bloc try/catch lorsque la voie normale par le code devrait aller sans erreur, sauf si il y a vraiment certaines conditions exceptionnelles-comme le serveur vers le bas, vos informations de connexion a expiré ou incorrect. Je n'aurais pas forcément l'utiliser pour gérer les non-exceptionnel erreurs -- dire comme l'utilisateur actuel n'étant pas dans le bon rôle. C'est que, quand on peut raisonnablement s'attendre et gérer une erreur qui n'est pas un état exceptionnel, je pense que vous devriez faire vos vérifications.
Dans le cas que vous avez décrit -- montage et l'exécution d'une requête, un bloc try/catch est une excellente façon de le gérer comme vous le faites normalement s'attendre à la requête de réussir. D'autre part, vous aurez probablement envie de vérifier que le contenu de résultat sont ce à quoi vous attendre avec contrôle logique de flux plutôt que de simplement tenter d'utiliser les données qui peuvent ne pas être valide pour votre but.
Une chose que vous voulez regarder dehors pour est bâclée utilisation de try/catch. Try/catch ne doit pas être utilisé pour vous protéger de la mauvaise programmation -- le "je ne sais pas ce qui va se passer si je fais cela, alors je vais l'envelopper dans un try/catch et espérer pour le mieux" de la programmation. En général, vous aurez envie de restreindre les types d'exceptions vous rattraper pour ceux qui ne sont pas liées au code lui-même (panne de serveur informations d'identification incorrectes, etc.) de sorte que vous pouvez trouver et corriger les erreurs qui sont liées code (pointeurs null, etc.).