Les exceptions...

Eléphant du PHP | 226 Messages

25 mai 2011, 14:45

Bonjour/ bonsoir,

Je provoque volontairement une erreur dans le code suivant (l'erreur est soulignée)
private function getListeFamilles() {
        $select = $this->db->prepare('select, famille from famille_prix'); //--> erreur
        try {
            $select->execute();
            while ($data = $select->fetch()) {
                echo '<option value="'.$data->id_fp.'">'.$data->famille.'</option>';
            }
            $select->closeCursor();
        } catch (ActionException $e) {
            header('Location:'.self::$erreurPage);
            exit();
        }
    }
Et n’obtiens pas le résultat désiré, c'est à dire la redirection vers une page d'erreur ($erreurPage). Au lieu de cela, j'ai un message d'erreur brute de fonderie qui s'affiche dans la page, comme si l'exception n'était pas gérée... Pourquoi ?
Merci,
Ps : ActionException est une extension de la classe Exception
«Le matin, quand il t’en coûte de te réveiller, que cette pensée te soit présente: c’est pour faire œuvre d’homme que je m’éveille.»
Marc Aurèle.

Eléphant du PHP | 92 Messages

25 mai 2011, 15:37

Hello,

T'as essayé de mettre lre prepare() dans le try{} pour être sûr que l'exception va être catchée.
De plus pour le catch() rajoute un catch(Exception $oException)
Programmer c'est 20% de syntaxe pour 80% de réflexion et dans les 20% de syntaxe il faut encore compter une bonne dose de réflexion...
Je vous donne des conseils, pas des solutions toutes faites...

Eléphant du PHP | 226 Messages

25 mai 2011, 17:27

C'est bizarre. Si je remplace l'extension 'ActionException' par la classe native Exception, cela fonctionne bien (la redirection s'effectue bien)
Pourtant, je n'ai fait que l'étendre
class ActionException extends Exception {}
...
Merci pour la réponse,
«Le matin, quand il t’en coûte de te réveiller, que cette pensée te soit présente: c’est pour faire œuvre d’homme que je m’éveille.»
Marc Aurèle.

Eléphant du PHP | 92 Messages

26 mai 2011, 11:11

Ben la question qu'il faut que tu te poses est la suivante :
"Est ce que l'exception envoyée est bien du type ActionException ?"

Parce que oui ton exception hérite bien de la native mais encore faut il que se soit bien celle là qui est envoyée...
Programmer c'est 20% de syntaxe pour 80% de réflexion et dans les 20% de syntaxe il faut encore compter une bonne dose de réflexion...
Je vous donne des conseils, pas des solutions toutes faites...