Problème avec les exceptions Mysql en php

gr43 Messages postés 95 Date d'inscription mardi 20 mai 2008 Statut Membre Dernière intervention 8 septembre 2010 - 20 mai 2008 à 21:47
gr43 Messages postés 95 Date d'inscription mardi 20 mai 2008 Statut Membre Dernière intervention 8 septembre 2010 - 21 mai 2008 à 21:10
Bonjour,

Je demande votre aide sur un site en php que je dois réaliser pour mes études.

Je gère les erreurs avec une fonction personnalisé et je souhaiterais
que les exceptions comme une indisponibilité du SGBD ne soit pas gérée
par cette fonction. Or ce n'est pas le cas malgrè les @
(@mysql_connect). j'utilise une classe pour la connexion à la base.
Merci d'avance

5 réponses

coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
21 mai 2008 à 06:11
salut

http://www.phpcs.com/codes/EXCEPTION-EXCEPTION-MYSQL-FILEEXCEPTION_43064.aspx

ici, j'ai des Exceptions et une fonction query...
0
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
21 mai 2008 à 11:18
Salut,

Une exception interrompt OBLIGATOIREMENT le script en cours. Les exceptions ne sont pas des erreurs comme les autres : elles doivent être exceptionnelles.
Si l'échec de la connexion à la base de données ne doit pas provoquer l'arrêt du script, il ne faut alors pas lever d'exception.

La classe que tu utilises doit probablement renvoyer des exceptions, même si un @ précède les fonctions de connexion : et c'est très bien, parce que ça veut dire qu'elle gère bien les erreurs. Cependant, si tu ne souhaites pas que le script s'interrompe, tu dois modifier la classe pour qu'elle ne lève pas d'exception mais renvoie une valeur précise.

<hr size="2" width="100%" />Neige

N'hésitez pas à lire la doc de PHP avant de poser des questions triviales...
0
gr43 Messages postés 95 Date d'inscription mardi 20 mai 2008 Statut Membre Dernière intervention 8 septembre 2010
21 mai 2008 à 11:51
Merci à tous les deux. par contre je suis en php4 donc pas d'execption.

En fait quand la base est inacessible j'ai besoin de réaliser un traitement particulier afin de ne pas perdre d'information comme le résultat d'une commande payée.
J'ai plusieurs solutions
- restore_error_handler() pour stopper la gestion personnalisée mais je ne gère plus acune erreur sur ce script.
- utilisé debug_backtrace() dans mon fichier de gestion d'erreur mais je dois alors traiter dans chaque scripte les erreurs de connexion à la base avec une autre fonction.

En fait je voudrais traiter les erreurs de connexion à la base que dans certains cas sinon dans les autres cas traitement traditionnel par ma gestion d'erreur personnalisée.

Si vous avez d'autres solutions, je suis toute OUI.
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
21 mai 2008 à 19:46
Hello,

moi j'en ai une : changer de classe. Ou la modifier. Tu ne pourras visiblement rien faire en dehors de la classe.

Quant aux exceptions : elles n'interrompent pas vraument un script : ce qui est dans le try après la ligne jetant l'exception ne sera pas exécuté, c'est vrai...mais ce qui est dans le catch, et surtout, ce qui serait éventuellement APRES le catch, le sera.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
gr43 Messages postés 95 Date d'inscription mardi 20 mai 2008 Statut Membre Dernière intervention 8 septembre 2010
21 mai 2008 à 21:10
Salut malalam, ma classe tu la connais c'est celle que j'ai posté en source.
Mais ce que je comprends pas c'est qu'elle ne lève pas d'exception(trigger_error) mais elle renvoie false. Elle devrait donc pas être prise en compte par mon gestionnaire, non?
0
Rejoignez-nous