1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104
|
<?xml version="1.0" encoding="UTF-8"?>
<!-- EN-Revision: 24249 -->
<!-- Reviewed: no -->
<sect1 id="zend.gdata.exception">
<title>Gdata Ausnahmen auffangen</title>
<para>
Die <classname>Zend_Gdata_App_Exception</classname> Klasse ist eine Basis Klasse für
Ausnahmen die durch <classname>Zend_Gdata</classname> geworfen werden. Man kann jede durch
<classname>Zend_Gdata</classname> geworfene Ausnahme auffangen indem
<classname>Zend_Gdata_App_Exception</classname> aufgefangen wird.
</para>
<programlisting language="php"><![CDATA[
try {
$client =
Zend_Gdata_ClientLogin::getHttpClient($username, $password);
} catch(Zend_Gdata_App_Exception $ex) {
// Die Ausnahme an den Benutzer bekanntgeben
die($ex->getMessage());
}
]]></programlisting>
<para>
Die folgenden Ausnahme Subklassen werden von <classname>Zend_Gdata</classname> verwendet:
<itemizedlist>
<listitem>
<para>
<classname>Zend_Gdata_App_AuthException</classname> indiziert das die Benutzer
Account Daten nicht gültig sind.
</para>
</listitem>
<listitem>
<para>
<classname>Zend_Gdata_App_BadMethodCallException</classname> indiziert das eine
Methode für ein Service aufgerufen wurde der diese Methode nicht unterstützt.
Zum Beispiel unterstützt der CodeSearch Service <methodname>post()</methodname>
nicht.
</para>
</listitem>
<listitem>
<para>
<classname>Zend_Gdata_App_HttpException</classname> indiziert das eine
<acronym>HTTP</acronym> Anfrage nicht erfolgreich war. Bietet die Möglichkeit
das komplette <classname>Zend_Http_Request</classname> Objekt zu erhalten um den
exakten Grund des Fehlers festzustellen in den Fällen in denen
<command>$e->getMessage()</command> nicht genug Details liefert.
</para>
</listitem>
<listitem>
<para>
<classname>Zend_Gdata_App_InvalidArgumentException</classname> wird geworfen
wenn eine Anwendung einen Wert bietet der in dem gegebenen Kontext nicht gültig
ist. Zum Beispiel wenn ein Kalender Sichtbarkeits Wert von "banana" spezifiziert
wird, oder ein Blogger Feed geholt werden soll ohne einen Blog Namen zu
spezifizieren.
</para>
</listitem>
<listitem>
<para>
<classname>Zend_Gdata_App_CaptchaRequiredException</classname> wird geworfen
wenn ein ClientLogin Versuch stattfindet und eine <trademark>CAPTCHA</trademark>
Challenge vom Authentifikations Service empfangen wird. Diese Ausnahme enthält
eine Token ID und eine <acronym>URL</acronym> zu einem
<trademark>CAPTCHA</trademark> Challenge Bild. Dieses Bild ist ein visuelles
Puzzle das dem Benutzer angezeigt werden sollte. Nachdem die Antwort des
Benutzers auf dieses Challenge Bild gesammelt wurde, kann die Antwort im
nächsten ClientLogin Versuch inkludiert werden. Alternativ kann der Benutzer
direkt zu dieser Webseite geleitet werden: <ulink
url="https://www.google.com/accounts/DisplayUnlockCaptcha"/> Weitere
Informationen können in der <link linkend="zend.gdata.clientlogin">ClientLogin
Dokumentation</link> gefunden werden.
</para>
</listitem>
</itemizedlist>
</para>
<para>
Man kann diese Ausnahme Subklassen verwenden um spezielle Ausnahmen unterschiedlich zu
handhaben. Siehe die <acronym>API</acronym> Dokumentation für Informationen darüber welche
Ausnahme Subklassen durch welche Methoden in <classname>Zend_Gdata</classname> geworfen
werden.
</para>
<programlisting language="php"><![CDATA[
try {
$client = Zend_Gdata_ClientLogin::getHttpClient($username,
$password,
$service);
} catch(Zend_Gdata_App_AuthException $authEx) {
// Die Benutzer Account Daten sind nicht korrekt.
// Es wäre nett dem Benutzer einen zweiten Versuch zu geben.
...
} catch(Zend_Gdata_App_HttpException $httpEx) {
// Google Data Server konnten nicht erreicht werden.
die($httpEx->getMessage);
}
]]></programlisting>
</sect1>
|