该应用程序基于MVC模式构建,因此我的控制器与我的模型分开。
我正在使用两个支付网关,Stripe和PayPal,并已将API代码移至名为Payment_Model.php的模型中。
这两个函数都有巨大的try / catch块,当付款失败时会抛出各种错误,这对我来说是件好事,对客户来说不是这样......
这是一个try catch块示例
try {
Stripe::setApiKey($this->config->item('stripe_secret_key'));
$customer = Customer::create([
'email' => 'customer@example.com',
'source' => $this->input->post('stripe_token'),
]);
$charge = Charge::create([
'customer' => $customer->id,
'amount' => $option->price,
'currency' => 'eur',
"description" => "Demo Transaction", // @TODO
]);
} catch (Exception $e) {
} catch (Stripe_CardError $e) {
throw new Exception($e);
} catch (Stripe_InvalidRequestError $e) {
throw new Exception($e);
} catch (Stripe_AuthenticationError $e) {
throw new Exception($e);
} catch (Stripe_ApiConnectionError $e) {
throw new Exception($e);
} catch (Stripe_Error $e) {
throw new Exception($e);
} catch (Exception $e) {
throw new Exception($e);
}
我不想在我的生产环境中显示这些错误或异常...而是我想用throw new Exception($e)
替换false
,以便我可以在我的控制器中调用模型函数如果出现问题,我可以将用户重定向到一个不错的错误页面......
所以我的问题是:
我可以返回一个布尔值,如果遇到了一些不好的东西,那么我可以重定向到我的控制器中的成功页面或错误页面吗?或者我错过了使用例外的观点?