<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet title="XSL formatting" type="text/xsl" href="http://prendreuncafe.com/blog/feed/rss2/xslt" ?><rss version="2.0"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:content="http://purl.org/rss/1.0/modules/content/"
  xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
  <title>Prendre un Café - Tag - exceptions  - Commentaires</title>
  <link>http://prendreuncafe.com/blog/</link>
  <atom:link href="http://prendreuncafe.com/blog/feed/tag/exceptions/rss2/comments" rel="self" type="application/rss+xml"/>
  <description></description>
  <language>fr</language>
  <pubDate>Thu, 28 Aug 2008 04:27:09 +0200</pubDate>
  <copyright>Contenus sous licence Creative Commons BY-SA</copyright>
  <docs>http://blogs.law.harvard.edu/tech/rss</docs>
  <generator>Dotclear</generator>
  
    
    
    <item>
    <title>Symfony, une redirection 302 et une exception sont dans un bateau - NiKo</title>
    <link>http://prendreuncafe.com/blog/post/2008/01/12/Symfony-une-redirection-302-et-une-exception-sont-dans-un-bateau#c12829</link>
    <guid isPermaLink="false">urn:md5:6b96b512b7624ec847577eec2d092e31</guid>
    <pubDate>Sun, 20 Jan 2008 00:11:55 +0100</pubDate>
    <dc:creator>NiKo</dc:creator>
    
    <description>&lt;p&gt;Romaric&amp;gt; Humph, tu soulèves une vraie question mais en l'état je ne me sens pas de renvoyer des exceptions pouvant potentiellement nuire à l'expérience utilisateur et d'interrompre sa navigation si je suis capable de les intercepter avant... Là pour le coup, c'est moi qui suis sans doute &lt;em&gt;cracra&lt;/em&gt; mais c'est comme ça, j'ai horreur des erreurs 500 affichées pour rien (même si elles sont customizables, effectivement) &lt;img src=&quot;/blog/themes/Puc4/smilies/smile.gif&quot; alt=&quot;:)&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;

&lt;p&gt;N'oublions pas que la valeur de retour d'une méthode d'action est la plupart du temps le dernier endroit où le développeur a encore la main sur les traitements au niveau du contrôleur (non, je ne placerai pas de blocs &lt;code&gt;try/catch&lt;/code&gt; dans les templates ^^.) Et faire un filtre Symfony qui les intercepterait systématiquement me semble un peu lourdingue; là pour le coup. Je préfère logguer l'erreur et afficher un message contextualisé informant l'utilisateur que quelque chose s'est mal déroulé que de l'envoyer sur une bête page d'erreur.&lt;/p&gt;

&lt;p&gt;Après, les goûts et les couleurs...&lt;/p&gt;</description>
  </item>
      
    
    <item>
    <title>Symfony, une redirection 302 et une exception sont dans un bateau - Romaric</title>
    <link>http://prendreuncafe.com/blog/post/2008/01/12/Symfony-une-redirection-302-et-une-exception-sont-dans-un-bateau#c12828</link>
    <guid isPermaLink="false">urn:md5:52f2262e6c11e11f1a62cea72afff546</guid>
    <pubDate>Sun, 20 Jan 2008 00:07:40 +0100</pubDate>
    <dc:creator>Romaric</dc:creator>
    
    <description>&lt;p&gt;Justement, s'il tu catches quelque chose du type natif Exception (dsl, je sais pas le mettre en couleur, lol ^^), il faut peut-être que ça le processus ammenant à l'affichage d'une erreur du client se passe, au cas où il y ait des choses à nettoyer un peu avant d'arrêter tout.&lt;/p&gt;


&lt;p&gt;J'imagine que si une exception remonte tout en haut, symfony t'affiche une belle page (ou plutôt pas belle à voir pour l'utilisateur ^^) avec la pile d'appel des fonctions et tout et tout. Y a pas moyen de change juste ce que cette page affiche et de laisser remonter l'exception ?&lt;/p&gt;


&lt;p&gt;Ce serait plus propre, non ? D'autant plus que si on imagine qu'avant, tu as fait le tri des exceptions que ton code générait, il ne reste plus que les gros plantages pour lever des Exceptions, qui eux devraient bien envoyer une page d'erreur à l'utilisateur (erreur 500, plantage sur le serveur, non ? il doit bien y avoir moyen de la customiser ^^).&lt;/p&gt;</description>
  </item>
      
    
    <item>
    <title>Symfony, une redirection 302 et une exception sont dans un bateau - NiKo</title>
    <link>http://prendreuncafe.com/blog/post/2008/01/12/Symfony-une-redirection-302-et-une-exception-sont-dans-un-bateau#c12827</link>
    <guid isPermaLink="false">urn:md5:3633840fa3926e196a71a155d3c20f9e</guid>
    <pubDate>Fri, 18 Jan 2008 21:39:21 +0100</pubDate>
    <dc:creator>NiKo</dc:creator>
    
    <description>&lt;p&gt;Romaric&amp;gt; En Symdony, retourner &lt;code&gt;sfRequest::SUCCESS&lt;/code&gt; depuis une méthode d'action ne signifie pas &lt;em&gt;Tout s'est bien passé&lt;/em&gt; mais &lt;em&gt;Affiche moi le template par défaut associé à l'action&lt;/em&gt;. C'est d'ailleurs pour ça que j'ajoute un message d'erreur à l'objet représentant la requête via sa méthode &lt;code&gt;setError()&lt;/code&gt;, car généralement on factorise ses templates pour n'en avoir qu'un seul à gérer, que les choses se soient bien passées ou non.&lt;/p&gt;
&lt;p&gt;Par exemple, dans le cas d'un formulaire, il est courant (voire conseillé) en cas d'erreurs détectées dans les valeurs soumises par l'utilisateur de réafficher le formulaire avec les champs en erreur mis en exergue.&lt;/p&gt;
&lt;p&gt;Tu trouveras plus d'infos sur la &lt;a href=&quot;http://www.symfony-project.org/book/1_0/06-Inside-the-Controller-Layer#Actions&quot; hreflang=&quot;en&quot; rel=&quot;nofollow&quot;&gt;gestion des actions en Symfony par ici&lt;/a&gt;, si ça t'intéresse &lt;img src=&quot;/blog/themes/Puc4/smilies/smile.gif&quot; alt=&quot;:)&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Sinon pour le cas du catch des exceptions du type natif &lt;code&gt;Exception&lt;/code&gt;, bien entendu que c'est un peu violent, mais tu comprendras aisément qu'à ce niveau du traitement tu ne peux pas renvoyer l'exception, ce qui aboutirait vraisemblablement à l'affichage d'une erreur sur le navigateur du client &lt;img src=&quot;/blog/themes/Puc4/smilies/wink.gif&quot; alt=&quot;;)&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;</description>
  </item>
      
    
    <item>
    <title>Symfony, une redirection 302 et une exception sont dans un bateau - Romaric</title>
    <link>http://prendreuncafe.com/blog/post/2008/01/12/Symfony-une-redirection-302-et-une-exception-sont-dans-un-bateau#c12826</link>
    <guid isPermaLink="false">urn:md5:7ee9627815f97db727f84618a7ce3917</guid>
    <pubDate>Fri, 18 Jan 2008 20:07:54 +0100</pubDate>
    <dc:creator>Romaric</dc:creator>
    
    <description>&lt;p&gt;Juste un petit truc qui me chagrine, c'est que tu catch d'une part la sfStopException, et d'autre part, n'importe quel type d'exception sans les faire remonter. Est-ce que le framework ne pourrait pas avoir besoin de ces exceptions (par exemple pour fermer des ressources qu'il aurait ouvertes) ?&lt;br /&gt;
J'utilise pas spécialement symphony (testé une fois pour voir), mais dans les Exceptions que tu catch, il peut y avoir un gros truc sur lequel le framework a besoin de réagir et tu transformes ça en sfView::SUCCESS (en gros tout va bien si je comprend bien, même si y a une grosse exception).&lt;/p&gt;</description>
  </item>
      
    
    <item>
    <title>Symfony, une redirection 302 et une exception sont dans un bateau - NiKo</title>
    <link>http://prendreuncafe.com/blog/post/2008/01/12/Symfony-une-redirection-302-et-une-exception-sont-dans-un-bateau#c12824</link>
    <guid isPermaLink="false">urn:md5:7d3c590eb3c1c11317e61c886f0ae969</guid>
    <pubDate>Wed, 16 Jan 2008 19:18:27 +0100</pubDate>
    <dc:creator>NiKo</dc:creator>
    
    <description>&lt;p&gt;greg&amp;gt; Oui, c'est ce dont je suis en train de me rendre compte. Après coup, la feature est appréciable (même si je n'ai jamais rencontré de cas concret d'utilisation...)&lt;/p&gt;


&lt;p&gt;Plus j'y pense et plus ce qui me dérange(ait) c'est qu'en PHP cette manière d'envisager les choses avec cette /rigueur/ est assez récente. En Java cela ne m'aurait pas choqué le moins du monde. Et oui, les idées reçues ont la vie dures...&lt;/p&gt;</description>
  </item>
      
    
    <item>
    <title>Symfony, une redirection 302 et une exception sont dans un bateau - greg</title>
    <link>http://prendreuncafe.com/blog/post/2008/01/12/Symfony-une-redirection-302-et-une-exception-sont-dans-un-bateau#c12823</link>
    <guid isPermaLink="false">urn:md5:c5f48b202f3f27adb40af59e5e37525f</guid>
    <pubDate>Wed, 16 Jan 2008 19:00:49 +0100</pubDate>
    <dc:creator>greg</dc:creator>
    
    <description>&lt;p&gt;Je ne sais pas si l'interruption d'un script ne dois pas être la même chose qu'une exception.&lt;/p&gt;


&lt;p&gt;Il se peut qu'on ait à faire un certain nombre de choses avant d'arrêter définitivement le script. Par exemple, certaines ressources n'aiment pas être laissées ouvertes et utiliser une exception me parait être un bon moyen pour tout arrêter proprement.&lt;/p&gt;</description>
  </item>
      
    
    <item>
    <title>Symfony, une redirection 302 et une exception sont dans un bateau - COil</title>
    <link>http://prendreuncafe.com/blog/post/2008/01/12/Symfony-une-redirection-302-et-une-exception-sont-dans-un-bateau#c12822</link>
    <guid isPermaLink="false">urn:md5:2a5739a28cd849dbed88b1eaa5728754</guid>
    <pubDate>Mon, 14 Jan 2008 13:23:48 +0100</pubDate>
    <dc:creator>COil</dc:creator>
    
    <description>&lt;p&gt;J'avais déjà été confronté au problème et c'est effectivement un peu déroutant quand on est jamais tombé dessus avant...  &lt;img src=&quot;/blog/themes/Puc4/smilies/wink.gif&quot; alt=&quot;;)&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;</description>
  </item>
      
    
    <item>
    <title>Symfony, une redirection 302 et une exception sont dans un bateau - NiKo</title>
    <link>http://prendreuncafe.com/blog/post/2008/01/12/Symfony-une-redirection-302-et-une-exception-sont-dans-un-bateau#c12820</link>
    <guid isPermaLink="false">urn:md5:041618eb82b8d13ed3543f149894a4f8</guid>
    <pubDate>Sun, 13 Jan 2008 10:00:04 +0100</pubDate>
    <dc:creator>NiKo</dc:creator>
    
    <description>&lt;p&gt;Piwaï&amp;gt; Merci pour cette leçon que je saurais retenir avec humilité. Tu reliras cependant mon billet et sa première conclusion &lt;img src=&quot;/blog/themes/Puc4/smilies/wink.gif&quot; alt=&quot;;)&quot; class=&quot;smiley&quot; /&gt; Etait-il réellement nécessaire d'en remettre une couche ? Certainement, et je t'en remercie &lt;img src=&quot;/blog/themes/Puc4/smilies/smile.gif&quot; alt=&quot;:)&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Olivier&amp;gt; Ben une fois que tu connais le truc, tout te parait beaucoup plus simple et propre. En même temps, j'ai jamais vraiment rencontré le cas ou un redirect 302 nécessitait l'execution de code après appel de la méthode correspondante (et &lt;a href=&quot;http://groups.google.fr/group/symfony-devs/browse_thread/thread/7834f1890c0842fc&quot; hreflang=&quot;en&quot; rel=&quot;nofollow&quot;&gt;il semble que je ne sois pas le seul&lt;/a&gt;), mais ça doit sans doute exister, effectivement (filtre, plugins, etc.)&lt;/p&gt;</description>
  </item>
      
    
    <item>
    <title>Symfony, une redirection 302 et une exception sont dans un bateau - Olivier</title>
    <link>http://prendreuncafe.com/blog/post/2008/01/12/Symfony-une-redirection-302-et-une-exception-sont-dans-un-bateau#c12817</link>
    <guid isPermaLink="false">urn:md5:22d33e9828e9a2cae8b5338288b925c3</guid>
    <pubDate>Sat, 12 Jan 2008 22:52:21 +0100</pubDate>
    <dc:creator>Olivier</dc:creator>
    
    <description>&lt;p&gt;Tu ferais comment pour arrêter l'execution du script ? exit() ? C'est un peu violent.&lt;/p&gt;


&lt;p&gt;Perso, je trouve que l'exception sfStopException est bien car on peut l'attraper et détecter ainsi toutes les redirections.&lt;/p&gt;</description>
  </item>
      
    
    <item>
    <title>Symfony, une redirection 302 et une exception sont dans un bateau - Piwaï</title>
    <link>http://prendreuncafe.com/blog/post/2008/01/12/Symfony-une-redirection-302-et-une-exception-sont-dans-un-bateau#c12816</link>
    <guid isPermaLink="false">urn:md5:7f62e2c71efb24386a7847115873a553</guid>
    <pubDate>Sat, 12 Jan 2008 21:51:53 +0100</pubDate>
    <dc:creator>Piwaï</dc:creator>
    
    <description>&lt;p&gt;Alors là mon petit coco, je ne suis pas d'accord avec toi ! &lt;img src=&quot;/blog/themes/Puc4/smilies/smile.gif&quot; alt=&quot;:)&quot; class=&quot;smiley&quot; /&gt; Je m'en vas te donner mon humble avis.&lt;/p&gt;


&lt;p&gt;Tout d'abord, l'information était bien sûr disponible dans le &amp;quot;book&amp;quot; de symfony :&lt;/p&gt;


&lt;p&gt;&lt;a href=&quot;http://www.symfony-project.org/book/1_0/06-Inside-the-Controller-Layer&quot; title=&quot;http://www.symfony-project.org/book/1_0/06-Inside-the-Controller-Layer&quot; rel=&quot;nofollow&quot;&gt;http://www.symfony-project.org/book...&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;The code located after a forward or a redirect in an action is never executed. You can consider that these calls are equivalent to a return statement. They throw an sfStopException to stop the execution of the action; this exception is later caught by symfony and simply ignored.&lt;/p&gt;


&lt;p&gt;Certes, on ne peut retenir l'intégralité du symfony book. Cependant, le fait qu'après un redirect, le code ne soit jamais executé aurait du te mettre la puce à l'oreille.&lt;/p&gt;


&lt;p&gt;D'autres part, je me trompe peut-être, mais il me semble que c'est pas très bien de capter 'tout ce qui peut passer'. Il faut connaitre son code, et toutes les exceptions qu'il peut lever, et donc capter celles-ci (avec un traitement différent suivant les exceptions). C'est à ça que sert l'héritage pour les exceptions.&lt;/p&gt;


&lt;p&gt;Java a quand même du bon la dessus, vu qu'on est forcé de déclarer les exceptions qui seront 'throw' par la méthode.&lt;/p&gt;


&lt;p&gt;Sinon, ne serait-il pas plus propre de faire suivre l'exception du redirect, vu que c'est ce qui se passe si tu ne fais pas de try catch ?&lt;/p&gt;


&lt;p&gt;catch (sfStopException $e)&lt;br /&gt;
{&lt;br /&gt;
throw $e;&lt;br /&gt;
}&lt;/p&gt;


&lt;p&gt;(je dis ça sans le tester, juste une idée..)&lt;/p&gt;


&lt;p&gt;Donc sinon pour ton code, à toi de te créer une classe d'exception spécifique à ton projet, et à faire en sorte que toutes tes exceptions du projet en héritent. Après, plus qu'à catcher cette classe d'exception.&lt;/p&gt;


&lt;p&gt;D'autres part, tu peux trouver ici la liste des exceptions de symfony :&lt;br /&gt;
&lt;a href=&quot;http://trac.symfony-project.com/browser/branches/1.0/lib/exception&quot; title=&quot;http://trac.symfony-project.com/browser/branches/1.0/lib/exception&quot; rel=&quot;nofollow&quot;&gt;http://trac.symfony-project.com/bro...&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;Hop Hop, c'est fini &lt;img src=&quot;/blog/themes/Puc4/smilies/wink.gif&quot; alt=&quot;;)&quot; class=&quot;smiley&quot; /&gt;  . Au passage, ça doit être mon premier commentaire sur ton blog, que je lis pourtant avec plaisir, continue !&lt;/p&gt;</description>
  </item>
      
</channel>
</rss>