| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- Reviewed: no -->
- <!-- EN-Revision: 24249 -->
- <sect1 id="zend.gdata.exception">
- <title>Gdata の例外処理</title>
- <para>
- <classname>Zend_Gdata_App_Exception</classname> は、
- <classname>Zend_Gdata</classname> がスローする例外の基底クラスです。
- <code>Zedn_Gdata</code> がスローする例外は、すべて <classname>Zend_Gdata_App_Exception</classname> でキャッチできます。
- </para>
- <programlisting language="php"><![CDATA[
- try {
- $client =
- Zend_Gdata_ClientLogin::getHttpClient($username, $password);
- } catch(Zend_Gdata_App_Exception $ex) {
- // 例外の内容をユーザに報告します
- die($ex->getMessage());
- }
- ]]></programlisting>
- <para>
- <classname>Zend_Gdata</classname> では、以下のような例外サブクラスを使用しています。
- <itemizedlist>
- <listitem>
- <para>
- <classname>Zend_Gdata_App_AuthException</classname>
- は、ユーザのアカウントの情報が無効であることを表します。
- </para>
- </listitem>
- <listitem>
- <para>
- <classname>Zend_Gdata_App_BadMethodCallException</classname>
- は、そのサービスがサポートしていないメソッドをコールしたことを表します。
- たとえば、CodeSearch サービスは <methodname>post()</methodname>
- をサポートしていません。
- </para>
- </listitem>
- <listitem>
- <para>
- <classname>Zend_Gdata_App_HttpException</classname>
- は、<acronym>HTTP</acronym> リクエストが失敗したことを表します。
- <classname>Zend_Http_Response</classname> オブジェクトの中身を調べることで、
- 実際の原因がわかります。この場合は
- <command>$e->getMessage()</command> の情報だけでは不十分です。
- </para>
- </listitem>
- <listitem>
- <para>
- <classname>Zend_Gdata_App_InvalidArgumentException</classname>
- は、その状況では無効な値を指定したことを表します。
- たとえば、カレンダーの可視性に "banana"
- を指定したり、blog の名前を省略して Blogger のフィードを取得したりといった場合です。
- </para>
- </listitem>
- <listitem>
- <para>
- <classname>Zend_Gdata_App_CaptchaRequiredException</classname>
- は、ClientLogin を試みた際に認証サービスから
- <trademark>CAPTCHA</trademark> チャレンジを受け取った場合にスローされます。
- この例外の中には、トークン ID および
- <trademark>CAPTCHA</trademark> チャレンジ画像への <acronym>URL</acronym>
- が含まれています。この画像はパズルのようなもので、
- これをユーザに対して表示させる必要があります。
- チャレンジ画像に対するユーザからの応答を受け取ったら、
- それを用いて再度 ClientLogin を試みることができます。
- あるいは、ユーザが直接
- <ulink url="https://www.google.com/accounts/DisplayUnlockCaptcha"/>
- を使用することもできます。詳細な情報は
- <link linkend="zend.gdata.clientlogin">ClientLogin のドキュメント</link>
- を参照ください。
- </para>
- </listitem>
- </itemizedlist>
- </para>
- <para>
- これらの例外サブクラスを使用すると、より細やかな例外処理を行なえます。
- どの <classname>Zend_Gdata</classname> のメソッドがどんな例外サブクラスをスローするのかについては、
- <acronym>API</acronym> ドキュメントを参照ください。
- </para>
- <programlisting language="php"><![CDATA[
- try {
- $client = Zend_Gdata_ClientLogin::getHttpClient($username,
- $password,
- $service);
- } catch(Zend_Gdata_App_AuthException $authEx) {
- // ユーザの認証に失敗しました
- // もう一度認証を行うなどの処置が適切でしょう
- ...
- } catch(Zend_Gdata_App_HttpException $httpEx) {
- // Google Data のサーバに接続できませんでした
- die($httpEx->getMessage);}
- ]]></programlisting>
- </sect1>
|