<?xml version="1.0" encoding="UTF-8"?>
<!-- EN-Revision: 17175 -->
<!-- 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
                    <code>$e->getMessage()</code> 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>
