gr43
Messages postés95Date d'inscriptionmardi 20 mai 2008StatutMembreDernière intervention 8 septembre 2010
-
20 mai 2008 à 21:47
gr43
Messages postés95Date d'inscriptionmardi 20 mai 2008StatutMembreDerniè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
neigedhiver
Messages postés2480Date d'inscriptionjeudi 30 novembre 2006StatutMembreDernière intervention14 janvier 201119 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...
gr43
Messages postés95Date d'inscriptionmardi 20 mai 2008StatutMembreDerniè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.
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 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.
Vous n’avez pas trouvé la réponse que vous recherchez ?
gr43
Messages postés95Date d'inscriptionmardi 20 mai 2008StatutMembreDerniè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?