使用Stripe的try / catch问题

时间:2017-07-20 18:10:50

标签: php stripe-payments

我尝试检查优惠券代码在条带中是否有效,然后再继续调用其API。如果您向订阅者发送无效的优惠券代码,则会收到致命错误。

所以,作为一个菜鸟,我想我会尝试try/catch,但很明显我搞砸了一些东西。我正在做这样的事情:

if (!empty($_POST['coupon'])) { //see if person even submitted a code

try {

$couponValid = \Stripe\Coupon::retrieve($coupon);

 throw new Exception();//if not a valid coupon code
} catch (Exception \Stripe\Error\InvalidRequest $e) {
    echo("error");
}
}
//run the rest of the code if no errors

这仍然给我一些致命的错误,即优惠券代码不存在(它没有)。

PHP Fatal error: Uncaught Stripe\Error\InvalidRequest: No such coupon: fdsf

条带文档说要处理我正在做的错误like this(我认为)

我在这里做错了什么。

1 个答案:

答案 0 :(得分:2)

从捕获中删除异常。

} catch (\Stripe\Error\InvalidRequest $e) {

如果您需要同时捕获Exception和\ Stripe \ Error \ InvalidRequest,您可以将捕获链接在一起。

} catch (\Stripe\Error\InvalidRequest $e) {
//Handle Invalid Request
} catch (Exception $e) {
//Handle Exception
}

如果你使用的是php 7.1+并且你想要同样的处理,无论抛出什么,你都可以管它们。

} catch (Exception | \Stripe\Error\InvalidRequest $e) {