Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 28-05-2007 15:04:58

lecra
Membre
Date d'inscription: 15-05-2007
Messages: 12

Traitement des exceptions

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 :

Code:

try{
    ....
}
catch (Zend_Exception $e){
    
}

Hors ligne

 

#2 28-05-2007 15:16:15

philippe
Administrateur
Lieu: Grenoble
Date d'inscription: 01-03-2007
Messages: 1624

Re: Traitement des exceptions

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 :

Code:

$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


twitter : @plv ; kitpages.fr : Création de sites internet à Grenoble et Paris

Hors ligne

 

#3 28-05-2007 15:18:36

lecra
Membre
Date d'inscription: 15-05-2007
Messages: 12

Re: Traitement des exceptions

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

 

#4 28-05-2007 15:32:34

philippe
Administrateur
Lieu: Grenoble
Date d'inscription: 01-03-2007
Messages: 1624

Re: Traitement des exceptions

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é) :

Code:

try {
  $controller->dispatch();
}
catch (Exception $e) {
  header("Location: erreur500.html");
}

A+, Philippe


twitter : @plv ; kitpages.fr : Création de sites internet à Grenoble et Paris

Hors ligne

 

#5 28-05-2007 15:38:02

lecra
Membre
Date d'inscription: 15-05-2007
Messages: 12

Re: Traitement des exceptions

merci, je crois que je vais tester les 2 solutions mais le try.. catch dans le controller semble vraiment plus logique.
Merci

Hors ligne

 

#6 29-05-2007 01:32:07

Julien
Membre
Date d'inscription: 16-03-2007
Messages: 501

Re: Traitement des exceptions

J'ai écrit un petit article avec quelques idées pour la gestion des exceptions.

Hors ligne

 

#7 29-05-2007 10:57:23

lecra
Membre
Date d'inscription: 15-05-2007
Messages: 12

Re: Traitement des exceptions

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

 

#8 29-05-2007 11:37:19

philippe
Administrateur
Lieu: Grenoble
Date d'inscription: 01-03-2007
Messages: 1624

Re: Traitement des exceptions

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


twitter : @plv ; kitpages.fr : Création de sites internet à Grenoble et Paris

Hors ligne

 

#9 29-05-2007 11:56:31

lecra
Membre
Date d'inscription: 15-05-2007
Messages: 12

Re: Traitement des exceptions

Merci

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages