Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour,
Il y a qqchose que je ne comprends pas.
J'ai codé un ViewHelper.
Pour un raison que je provoque volontairement, mon helper génèrer une exception (avec une classe perso).
Le problème, c'est que normalement, mon errorController gère les exceptions. Hors dans ce cas précis,
J'ai le début de ma vue qui s'affiche avec un Fatal Error à l'endroit de mon helper dans la vue indiquant le message de mon exception et la ligne de mon fichier ou est généré l'exception
Comment expliquer cela ?
Hors ligne
Hello,
Je dirais parce que "Fatal Error" et non pas "Exception" donc fin du script sans autre forme de procès.
A+
Hors ligne
?? Mon 'throw My_exception' génère un fatal error ?? Je ne te comprends pas..
Hors ligne
Tu peux nous envoyer le message d'erreur et la ligne du throw exception ?
A+, Philippe
Hors ligne
oui, je suis donc dans un view helper :
if ($sensor === null) { throw new My_Sensor_Exception('Impossible de trouvé la configuration de sonde'); }
$sensor vaut donc null.
Le résultat, qqpart dans la vue qui correspond à l'action, (mais pas de layout, rien que la vue de l'action
Fatal error: My_Sensor_Exception: Impossible de trouvé la configuration de sonde in /usr/local/www/application/lib/My/View/Helper/Sensor.php on line 81
si je génère une expcetion ailleurs (par exemple, je change mon répertoire de modules), j'ai bien mon errorController qui prend en charge avec un affiche complet de mon excpetion (message, stacktrace, etc..)
Hors ligne
Hum... c'est effectivement très étrange ton histoire...
Pour diagnostiquer ça, j'aurais tendance à mettre des try/catch autour de l'exception. Tant que le catch est appelé, j'enlève le try/catch et je le mets une étape au dessus (autour de la fonction appelante) pour voir où apparaît la fatal error... (avec un echo quelconque et un exit dans tes catchs successifs).
Hum... oui, c'est potentiellement long et galère.... Au moins tu verras clairement d'où vient la fatal error. Si elle vient du code du ZF, t'es bon pour leur remonter un bug...
Voilà... pas d'autre idée en stock, mais ça sent le try/catch foireux dans le ZF avec un truc bizarre dans le catch...
A+, Philippe
PS : juste pour info, c'est quelle version du ZF ?
Hors ligne
version 1.8.0
merci, je vais cherché..
Hors ligne
Ca y'est j'ai trouvé. C'est de ma faute, j'oublie le code je fais !
En fait, j'ai une méthode __toString() plus haut que ma fonction ou je lance mon exception, hors, tu n'as pas le droit de généré d'exception dans la méthode __tostring et pour contourner le problème, j'avais ajouté un try catch qui génère un E_USER_ERROR.
J'avais oublié cela...
Merci du coup de main ! Tu avais donc raison, un try catch foireux
Hors ligne