[Php] AOP: l'essai est-il nécessaire ou non?



Answers

PDO a trois modes d'erreur configurables . La valeur par défaut est simplement de définir un code d'erreur, pas de lancer une exception.

Cependant, vous devriez utiliser PDO::ERRMODE_EXCEPTION . La façon dont PHP et PDO gèrent normalement les erreurs (c'est-à-dire, appuyer silencieusement sur le code et faire la mauvaise chose sans vous le dire ) est absolument folle et une grande raison de l'horreur de PHP.

Si quelque chose ne va pas avec votre requête, la bonne chose à faire est d'arrêter l'exécution et de lancer une exception pour que vous ayez une trace claire et que vous puissiez trouver et résoudre le problème.

De plus, il est beaucoup plus facile (c'est-à-dire moins «ennuyeux») d'utiliser try-catch que de vérifier errorCode et errorInfo après chaque requête. Vous ne devriez utiliser try-catch que si vous attendez la possibilité de l'erreur et que vous pouvez faire quelque chose à ce sujet - sinon vous devriez laisser l'exception monter en flèche. S'il s'agit d'une erreur inattendue , il s'agit probablement d'un bug dans votre code et vous devriez le savoir via l'exception afin de pouvoir le réparer!

Si vous voulez faire quelque chose de spécial en signalant l'exception (par exemple, imprimez-la, envoyez-nous un email, peu importe), puis enregistrez un gestionnaire d'exceptions par défaut pour prendre soin des exceptions non interceptées. Sur un système de production, vous devez enregistrer un gestionnaire d'exceptions par défaut qui affiche une page générique de 500 pages. Il est clair sur les détails de l'erreur et consigne la trace complète ailleurs pour le débogage.

Question

Je reçois des signaux mitigés. L'avertissement dans la documentation de l' AOP semble assez clair que l'omission de l'essai pourrait compromettre la sécurité. Cependant, ce fil suggère que ce n'est pas vraiment nécessaire. À mon avis, il serait très ennuyeux d'emballer chaque requête dans un essai-catch. Des conseils sur la façon de gérer cela?






Links