Zend_Gdata_Exception.xml 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <!-- EN-Revision: 13842 -->
  3. <!-- Reviewed: no -->
  4. <sect1 id="zend.gdata.exception">
  5. <title>Attraper les exceptions Gdata</title>
  6. <para>La classe <classname>Zend_Gdata_App_Exception</classname> est la classe de base de toutes les exceptions envoyées par
  7. les composants Gdata.</para>
  8. <programlisting role="php"><![CDATA[
  9. try {
  10. $client =
  11. Zend_Gdata_ClientLogin::getHttpClient($username, $password);
  12. } catch(Zend_Gdata_App_Exception $ex) {
  13. // Affiche l'exception à l'utilisateur
  14. die($ex->getMessage());
  15. }
  16. ]]></programlisting>
  17. <para>Voici les sous classes exception utilisées dans <classname>Zend_Gdata</classname> :<itemizedlist>
  18. <listitem>
  19. <para><classname>Zend_Gdata_App_AuthException</classname> indique que les identifiants du compte utilisateur sont
  20. erronés.</para>
  21. </listitem>
  22. <listitem>
  23. <para><classname>Zend_Gdata_App_BadMethodCallException</classname> est levée lorsque vous tentez d'utiliser une
  24. méthode sur un service qui ne l'implémente pas. Par exemple, le service CodeSearch ne supporte pas la
  25. méthode <code>post()</code>.</para>
  26. </listitem>
  27. <listitem>
  28. <para><classname>Zend_Gdata_App_HttpException</classname> indique un échec de requête HTTP. Cette exception vous
  29. donne le moyen de récupérer la réponse <classname>Zend_Http_Response</classname> entière pour déterminer la cause
  30. exacte de l'erreur, alors que <code>$e-&gt;getMessage()</code> ne montre pas autant de détails.</para>
  31. </listitem>
  32. <listitem>
  33. <para><classname>Zend_Gdata_App_InvalidArgumentException</classname> est envoyée lorsque l'application envoie une
  34. valeur non attendue. Par exemple spécifier la visibilité d'un calendrier à "banane", ou récupérer le
  35. flux d'un blog Blogger sans spécifier le nom du blog en question.</para>
  36. </listitem>
  37. <listitem>
  38. <para><classname>Zend_Gdata_App_CaptchaRequiredException</classname> est envoyée lorsqu'une tentative de
  39. ClientLogin reçoit un challenge <trademark>CAPTCHA</trademark> depuis le service d'authentification.
  40. Cette exception contient un jeton ID et une URL vers une image <trademark>CAPTCHA</trademark> . Cette
  41. image est un puzzle visuel qui devrait être retournée à l'utilisateur du service. Après récupération de
  42. la réponse de l'utilisateur, celle-ci peut être incluse lors du ClientLogin suivant. L'utilisateur peut
  43. aussi alternativement être redirigé vers ce site : <ulink
  44. url="https://www.google.com/accounts/DisplayUnlockCaptcha"></ulink>. De plus amples informations peuvent
  45. être trouvées dans <link linkend="zend.gdata.clientlogin">la documentation du ClientLogin</link>.</para>
  46. </listitem>
  47. </itemizedlist></para>
  48. <para>Vous pouvez ainsi utiliser ces sous-classes d'exceptions pour les gérer chacune différemment. Référez vous à
  49. l'API pour savoir quel composant <classname>Zend_Gdata</classname> envoie quel type d'exception.</para>
  50. <programlisting role="php"><![CDATA[
  51. try {
  52. $client =
  53. Zend_Gdata_ClientLogin::getHttpClient($username,
  54. $password,
  55. $service);
  56. } catch(Zend_Gdata_App_AuthException $authEx) {
  57. // identifiants fournis incorrects
  58. // Vous pourriez par exemple offrir une
  59. // seconde chance à l'utilisateur ici
  60. ...
  61. } catch(Zend_Gdata_App_HttpException $httpEx) {
  62. // les serveurs Google Data sont injoignables
  63. die($httpEx->getMessage);
  64. }
  65. ]]></programlisting>
  66. </sect1>