2016-07-04 3 views
0

Я пытаюсь настроить сообщения об ошибках. Для обработки ошибок я использовал «попробовать/поймать» блок согласно this Recurly документации, как это, например:Восстановительный PHP-клиент. Как настроить сообщения об ошибках?

try { 
    $account = Recurly_Account::get('my_account_id'); 
    $subscription = new Recurly_Subscription(); 
    $subscription->account = $account; 
    $subscription->plan_code = 'my_plan_code'; 
    $subscription->coupon_code = 'my_coupon_code'; 
    /* .. etc .. */ 
    $subscription->create(); 
} 
catch (Exception $e) { 
    $errorMsg = $e->getMessage(); 
    print $errorMsg; 
} 

Я хотел использовать код поймать блок, как это:

catch (Exception $e) { 
    $errorCode = $e->getCode(); 
    print $myErrorMsg[$errorCode]; // array of my custom messages. 
} 

Но Получить код () всегда возвращает ноль для всех возможных ошибок.

Мой вопрос для Recurly Team (или кто там в этой теме): Как получить код ошибки для ошибок? Или, пожалуйста, объясните мне, как я могу решить эту тему. Благодаря!

ответ

1

Если вы посмотрите на PHP-клиент в Github и ищете «throw new», что и делается, когда генерируется исключение, вы увидите, что они не устанавливают код ошибки исключения, второй параметр метод конструктора исключений.

Recurly PHP Client на Github:https://github.com/recurly/recurly-client-php/search?utf8=%E2%9C%93&q=throw+new

PHP Exception документация:http://php.net/manual/en/language.exceptions.extending.php

Таким образом, вы будете должны поймать больше исключений в зависимости от их имени т.е.

catch (Recurly_NotFoundError $e) { 
    print 'Record could not be found'; 
} 

OR

посмотреть сообщение об исключении и сравнить его

catch (Exception $e) { 
    $errorMessage = $e->getMessage(); 
    if($errorMessage=='Coupon is not redeemable.') 
    { 
    $myerrorCode=1; 
    } 
    //Add more else if, or case switch statement to handle the various errors you want to handle 
    print $myErrorMsg[$myerrorCode]; // array of my custom messages. 
}