2017-10-20 7 views
0

Existe-t-il une manière plus simple de gérer plusieurs types d'exception pour un seul bloc try? Comme vous le verrez ci-dessous, nous avons un code spécifique à exécuter pour les différentes instructions catch.Gestion de plusieurs types d'exception pour un bloc d'essai

Cette fonction est l'une des nombreuses qui utilisent la logique répétée try catch. Est-il possible d'éliminer ce code de capture répété?

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

Catch 'Stripe \ Error \ Base' à la place de ceux spécifiques – ShiraNai7

Répondre

0

Toutes ces erreurs étendent Stripe\Error\Base, si la capture Stripe\Error\Base devrait couvrir les plus spécifiques. Cela dit, Stripe fournit différents types d'exceptions car doit faire effectuer différentes actions en réponse aux différents types. Une exception RateLimit est quelque chose que vous devriez mettre en file d'attente et réessayer plus tard. Une exception Card est quelque chose que vous devriez revenir à l'utilisateur pour corriger. Une erreur Authentication peut signifier que votre application entière est incapable de prendre des cartes de crédit car votre jeton API est manquant/incorrect et vous perdez $$$.