1 <?xml version="1.0" encoding="UTF-8"?>
3 <!-- EN-Revision: 20779 -->
4 <sect1 id="zend.gdata.exception">
5 <title>Gdata の例外処理</title>
8 <classname>Zend_Gdata_App_Exception</classname> は、
9 <classname>Zend_Gdata</classname> がスローする例外の基底クラスです。
10 <code>Zedn_Gdata</code> がスローする例外は、すべて <classname>Zend_Gdata_App_Exception</classname> でキャッチできます。
13 <programlisting language="php"><![CDATA[
16 Zend_Gdata_ClientLogin::getHttpClient($username, $password);
17 } catch(Zend_Gdata_App_Exception $ex) {
19 die($ex->getMessage());
24 <classname>Zend_Gdata</classname> では、以下のような例外サブクラスを使用しています。
29 <classname>Zend_Gdata_App_AuthException</classname>
30 は、ユーザのアカウントの情報が無効であることを表します。
35 <classname>Zend_Gdata_App_BadMethodCallException</classname>
36 は、そのサービスがサポートしていないメソッドをコールしたことを表します。
37 たとえば、CodeSearch サービスは <methodname>post()</methodname>
43 <classname>Zend_Gdata_App_HttpException</classname>
44 は、<acronym>HTTP</acronym> リクエストが失敗したことを表します。
45 <classname>Zend_Http_Response</classname> オブジェクトの中身を調べることで、
47 <command>$e->getMessage()</command> の情報だけでは不十分です。
52 <classname>Zend_Gdata_App_InvalidArgumentException</classname>
53 は、その状況では無効な値を指定したことを表します。
54 たとえば、カレンダーの可視性に "banana"
55 を指定したり、blog の名前を省略して Blogger のフィードを取得したりといった場合です。
60 <classname>Zend_Gdata_App_CaptchaRequiredException</classname>
61 は、ClientLogin を試みた際に認証サービスから
62 <trademark>CAPTCHA</trademark> チャレンジを受け取った場合にスローされます。
64 <trademark>CAPTCHA</trademark> チャレンジ画像への <acronym>URL</acronym>
65 が含まれています。この画像はパズルのようなもので、
66 これをユーザに対して表示させる必要があります。
67 チャレンジ画像に対するユーザからの応答を受け取ったら、
68 それを用いて再度 ClientLogin を試みることができます。
70 <ulink url="https://www.google.com/accounts/DisplayUnlockCaptcha"/>
72 <link linkend="zend.gdata.clientlogin">ClientLogin のドキュメント</link>
80 これらの例外サブクラスを使用すると、より細やかな例外処理を行なえます。
81 どの <classname>Zend_Gdata</classname> のメソッドがどんな例外サブクラスをスローするのかについては、
82 <acronym>API</acronym> ドキュメントを参照ください。
85 <programlisting language="php"><![CDATA[
87 $client = Zend_Gdata_ClientLogin::getHttpClient($username,
90 } catch(Zend_Gdata_App_AuthException $authEx) {
92 // もう一度認証を行うなどの処置が適切でしょう
94 } catch(Zend_Gdata_App_HttpException $httpEx) {
95 // Google Data のサーバに接続できませんでした
96 die($httpEx->getMessage);}