Pages :
(reprise du message précédent)

Jerome A a écrit :

Par conséquent, je trouve risible que new PDO lance une exception si la connexion échoue. L'action n'est pas illégale, ce qui le serait, ce serait de tenter une requete sur un objet PDO non connecté.


Oui, t'as pas tort, ça a sans doute était retenu parce que c'est un moyen pratique pour tester mais pas forcément logique.

J'ai l'impression que les tests en php relèvent de toute façon plus de la bidouille qu'autre chose tel truc qui renvoie false, l'autre throw et celui la 0... berk, berk, berk Smiley smile
Modifié par bzh (18 Mar 2009 - 11:38)
a écrit :
J'ai l'impression que les tests en php relèvent de toute façon plus de la bidouille qu'autre chose tel truc qui renvoie false, l'autre throw et celui la
0... berk, berk, berk

C'est un peu malheureux mais sur ce point en parlant de php tu as totalement raison. Les fonctions standard ne sont pas toujours très cohérentes.
Petit exemple illustrant un manque de cohérence flagrant dans les fonctions standard de php : regardez attentivement l'ordre des paramètres en ce qui concerne les fonctions de manipulation de chaîne. Pas besoin d'aller très loin, comparez implode et explode : ordre des paramètres inverse ! De même entre str_replace, substr, strpos, etc. la chaîen sujet étant tantôt au début, tantôt à la fin. Et ce n'est pas les seules...

Ca se tient de l'héritage de php avec C, mais c'est dommage... comme le fait qu'on ne peut considérer une string comme un objet, d'ailleurs.
'lut !

Jerome A a écrit :
Alors maintenant, que faire ? Tester avant ou tenter le coup et rattraper l'erreur ensuite ?
Personnellement, je teste avant. Si vraiment je ne peux pas (boite noire), try/catch.
Je le répète, c'est purement perso comme décision et tu as le droit te t'indigner, mais try ça veut quand même dire "essayer". Au lieu de mettre la main sur la porte du four pour attraper la brulure, je vérifie la température.
Sauf qu'en l'occurrence et même si tu n'a pas appelé ça essayer (try) il s'agissait bel et bien d'une tentative. Pour reprendre l'exemple de ton tuto tu as rajouté @ avant le mysql_connect parce que tu tentais de te connecter. Quand par la suite tu "testes" la valeur de $link "avant" de faire un @mysql_select_db c'est en fait inutile puisqu'une exception avait déjà été lancée avant (throw) et pas attrapée (catch) Smiley cligne .

En fait j'ai l'impression qu'il s'agit surtout d'une question de vocabulaire et que tu associes la notion d'exception à certaines erreurs et pas à d'autres ?

Edit: sinon, après lecture de la doc sur les exceptions en PHP, je vois qu'il n'y est fait aucune mention de finally Smiley decu
Modifié par Heyoan (20 Mar 2009 - 20:28)
Heyoan a écrit :
En fait j'ai l'impression qu'il s'agit surtout d'une question de vocabulaire et que tu associes la notion d'exception à certaines erreurs et pas à d'autres ?

Il y a un peu de ça en effet Smiley cligne

Bref, j'ai modifié le tuto qui devrait être plus consensuel (ce qui ne m'empêchera pas de coder comme je le fais d'habitude)

Bonne journée
Pages :