Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour,
J'ai un petit problème de traitement d'erreur suite à une requête sur base de données.
Quand j'essai de faire un insert sur un champ qui n'accepte pas les doublons; il y a génération d'une erreur mysql qui m'envoi vers index.php (jusque là c'est normal).
Mon problème c'est que je souhaiterai pouvoir traiter cette erreur en envoyer un message à l'utilisateur et je ne vois pas coment faire.
Structure de index.php :
try{ .... } catch (Zend_Exception $e){ }
Hors ligne
Est-ce que tu peux préciser un peu ton environnement : est-ce que tu utilises le MVC (controlleurs, actions, routeurs,...) ? Est-ce que ta requête est appelée dans un controller ?
Note que si tu es bien dans une action, il faut penser à mettre :
$controller->throwExceptions(true);
dans ton index.php si tu veux que ton exception remonte jusqu'à index.php, sinon elle est interceptée par le Zend_Controller.
A+, Philippe
Hors ligne
ah oui, je suis en MVC et j'ai bien mis le throwException
Je fais ma requête dans une action d'un controller et le try...catch se trouve dans mon index.php
Hors ligne
Hum... j'aurais tendance à dire que le try/catch serait mieux placé dans ton controlleur. En cas de problème tu pourrais rediriger vers un autre controlleur avec $this->_forward ou envoyer vers une vue affichant une erreur.
Cela dit si tu veux l'intercepter dans index.php, (je suppose que ton try/catch est autour du $controller->dispatch()), le plus simple est à mon avis de faire une redirection 302 vers une page d'erreur, un truc du genre (non testé) :
try { $controller->dispatch(); } catch (Exception $e) { header("Location: erreur500.html"); }
A+, Philippe
Hors ligne
merci, je crois que je vais tester les 2 solutions mais le try.. catch dans le controller semble vraiment plus logique.
Merci
Hors ligne
J'ai écrit un petit article avec quelques idées pour la gestion des exceptions.
Hors ligne
Merci, je vais jeter un coup d'oeil dessus ton article.
Par contre je pense pas avoir le temps de le mettre en place pour le site que je suis en train de faire.
Est-ce vraiment incorrect d'utiliser un try..catch dans le controller ?
Hors ligne
Ca n'est pas incorrect, tu peux gérer tes exceptions simplement, il n'y a pas de raison de faire remonter les exceptions jusqu'au framework dans tous les cas. Ca peut être utile dans le cas d'erreurs imprévisibles ou bien qui ne viennent pas du controlleur (typiquement une 404: not found), mais sinon, c'est tout à fait correct de ne pas faire ressortir l'exception de ton controller.
A+, Philippe
Hors ligne
Merci
Hors ligne