エラー処理 -- Services_Ebay のエラー処理
Services_Ebay の例外
Services_Ebay は PHP 5 以降でのみ使用できるパッケージなので、
例外処理を行います。また、すべての例外の基底クラスは
PEAR_Exception クラスとなっています。Services_Ebay
が提供するあらゆる API コールで例外がスローされる可能性があります。
つまり、それらはすべて try/catch ブロックで囲んでおく必要があるということです。
例 67-1例外の処理 require_once 'Services/Ebay.php';
// 認証データを渡します
$session = Services_Ebay::getSession($devId, $appId, $certId);
$session->setToken($token);
// 新しいプロキシオブジェクトを作成します
$ebay = new Services_Ebay($session);
try {
// メソッドをコールします
echo $ebay->GeteBayOfficialTime();
} catch (Exception $e) {
echo "問題が発生しました。";
echo $e;
} |
|
存在しない API をコールしたり、API に渡すパラメータを間違えたりした場合は、
eBay は API コールを中断し、エラー情報を含む XML ドキュメントを返します。
Services_Ebay は自動的にこれを例外に変換し、
PHP アプリケーションで簡単に処理できるようにします。
Services_Ebay の警告
時には、無効なパラメータが渡されたとしても eBay API
がリクエストの処理を続行する場合もあります。そのような場合は、
結果の XML ドキュメントの中にはリクエストに対する応答と
エラー情報が両方含まれます。
このような場合、そのエラーは警告として扱われます。
これらは深刻なエラーではないからです。Services_Ebay は、
これらのエラーを例外ではなく Services_Ebay_Error
のインスタンスに変換します。このオブジェクトは
Services_Ebay_Session に保存され、
アプリケーション側で後から取得できるようになります。
例 67-2警告の処理 require_once 'Services/Ebay.php';
// 認証データを渡します
$session = Services_Ebay::getSession($devId, $appId, $certId);
$session->setToken($token);
// 新しいプロキシオブジェクトを作成します
$ebay = new Services_Ebay($session);
try {
// メソッドをコールします
echo $ebay->GeteBayOfficialTime();
} catch (Exception $e) {
// 例外を無視し、警告を処理します。
}
$errors = $session->getErrors();
if (count($errors) == 0) {
echo "エラーや警告はありません。\n";
} else {
foreach ($errors as $error) {
printf("%s: %s (%d))\n", $error->getSeverity(), $error->getLongMessage(), $error->getCode());
}
} |
|