是否有更简洁的方法来处理单个try块的多个异常类型?正如您将在下面看到的,我们有针对不同catch语句执行的特定代码。
这个函数是许多使用重复try catch逻辑的函数之一。有可能以某种方式消除这个重复的捕获代码吗?
public function add_payment_method(Request $request){
try{
// Try to do some stuff
} catch (\Stripe\Error\RateLimit $e) {
/*
CODE FOR THIS SPECIFIC EXCEPTION
*/
} catch (\Stripe\Error\InvalidRequest $e) {
/*
CODE FOR THIS SPECIFIC EXCEPTION
*/
} catch (\Stripe\Error\Authentication $e) {
/*
CODE FOR THIS SPECIFIC EXCEPTION
*/
} catch (\Stripe\Error\Base $e) {
/*
CODE FOR THIS SPECIFIC EXCEPTION
*/
} catch (\Stripe\Error\ApiConnection $e) {
/*
CODE FOR THIS SPECIFIC EXCEPTION
*/
} catch (\Exception $e) {
/*
CODE FOR GENERIC EXCEPTION
*/
}
}
答案 0 :(得分:0)
所有这些错误都会延伸Stripe\Error\Base
,因此捕获Stripe\Error\Base
应涵盖更具体的错误。
也就是说,Stripe提供了不同的异常类型,因为 应该针对不同的类型执行不同的操作。 RateLimit
异常是您应该排队并稍后重试的内容。 Card
例外是您应该回复给用户修复的内容。 Authentication
错误可能意味着您的整个应用都无法使用信用卡,因为您的API令牌丢失/错误且您正在失去$$$。
答案 1 :(得分:-1)