| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- EN-Revision: 24249 -->
- <!-- Reviewed: no -->
- <sect1 id="zend.gdata.exception">
- <title>Attraper les exceptions Gdata</title>
- <para>
- La classe <classname>Zend_Gdata_App_Exception</classname> est la classe de base de
- toutes les exceptions envoyées par les composants Gdata.
- </para>
- <programlisting language="php"><![CDATA[
- try {
- $client =
- Zend_Gdata_ClientLogin::getHttpClient($username, $password);
- } catch(Zend_Gdata_App_Exception $ex) {
- // Affiche l'exception à l'utilisateur
- die($ex->getMessage());
- }
- ]]></programlisting>
- <para>
- Voici les sous classes exception utilisées dans <classname>Zend_Gdata</classname>
- :<itemizedlist>
- <listitem>
- <para>
- <classname>Zend_Gdata_App_AuthException</classname> indique que les
- identifiants du compte utilisateur sont erronés.
- </para>
- </listitem>
- <listitem>
- <para>
- <classname>Zend_Gdata_App_BadMethodCallException</classname> est levée
- lorsque vous tentez d'utiliser une méthode sur un service qui ne l'implémente
- pas. Par exemple, le service CodeSearch ne supporte pas la méthode
- <methodname>post()</methodname>.
- </para>
- </listitem>
- <listitem>
- <para>
- <classname>Zend_Gdata_App_HttpException</classname> indique un échec de
- requête <acronym>HTTP</acronym>. Cette exception vous donne le moyen de récupérer la réponse
- <classname>Zend_Http_Response</classname> entière pour déterminer la cause
- exacte de l'erreur, alors que <code>$e->getMessage()</code> ne montre pas
- autant de détails.
- </para>
- </listitem>
- <listitem>
- <para>
- <classname>Zend_Gdata_App_InvalidArgumentException</classname> est envoyée
- lorsque l'application envoie une valeur non attendue. Par exemple spécifier la
- visibilité d'un calendrier à "banane", ou récupérer le flux d'un blog Blogger
- sans spécifier le nom du blog en question.
- </para>
- </listitem>
- <listitem>
- <para>
- <classname>Zend_Gdata_App_CaptchaRequiredException</classname> est envoyée
- lorsqu'une tentative de ClientLogin reçoit un challenge
- <trademark>CAPTCHA</trademark> depuis le service d'authentification. Cette
- exception contient un jeton ID et une <acronym>URL</acronym> vers une image
- <trademark>CAPTCHA</trademark> . Cette image est un puzzle visuel qui devrait
- être retournée à l'utilisateur du service. Après récupération de la réponse de
- l'utilisateur, celle-ci peut être incluse lors du ClientLogin suivant.
- L'utilisateur peut aussi alternativement être redirigé vers ce site : <ulink
- url="https://www.google.com/accounts/DisplayUnlockCaptcha"></ulink>. De plus
- amples informations peuvent être trouvées dans <link
- linkend="zend.gdata.clientlogin">la documentation du ClientLogin</link>.
- </para>
- </listitem>
- </itemizedlist>
- </para>
- <para>
- Vous pouvez ainsi utiliser ces sous-classes d'exceptions pour les gérer chacune
- différemment. Référez vous à l'API pour savoir quel composant
- <classname>Zend_Gdata</classname> envoie quel type d'exception.
- </para>
- <programlisting language="php"><![CDATA[
- try {
- $client =
- Zend_Gdata_ClientLogin::getHttpClient($username,
- $password,
- $service);
- } catch(Zend_Gdata_App_AuthException $authEx) {
- // identifiants fournis incorrects
- // Vous pourriez par exemple offrir une
- // seconde chance à l'utilisateur ici
- ...
- } catch(Zend_Gdata_App_HttpException $httpEx) {
- // les serveurs Google Data sont injoignables
- die($httpEx->getMessage);
- }
- ]]></programlisting>
- </sect1>
|