2017-10-20 99 views
0

是否有更简单的方法来处理单个try块的多个异常类型?正如您将在下面看到的,我们有针对不同的catch语句执行的特定代码。为一个尝试块处理多个异常类型

这个函数是许多使用重复try 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

抓住'Stripe \ Error \ Base'而不是特定的 – ShiraNai7

回答

0

所有这些错误的扩展Stripe\Error\Base,所以捕Stripe\Error\Base应包括更具体的。

也就是说,Stripe提供了不同的异常类型,因为应该针对不同的类型做出不同的操作。异常是您应该排队并稍后重试的一种情况。一个Card异常是你应该反馈给用户来解决的。 Authentication错误可能意味着您的整个应用程序无法使用信用卡,因为您的API令牌丢失/错误,并且您正在丢失$$$。