Problème avec les exceptions Mysql en php

Signaler
Messages postés
95
Date d'inscription
mardi 20 mai 2008
Statut
Membre
Dernière intervention
8 septembre 2010
-
Messages postés
95
Date d'inscription
mardi 20 mai 2008
Statut
Membre
Dernière intervention
8 septembre 2010
-
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

Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
39
salut

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

ici, j'ai des Exceptions et une fonction query...
Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
16
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...
Messages postés
95
Date d'inscription
mardi 20 mai 2008
Statut
Membre
Dernière intervention
8 septembre 2010

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.
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
22
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.
Messages postés
95
Date d'inscription
mardi 20 mai 2008
Statut
Membre
Dernière intervention
8 septembre 2010

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?