2017-10-20 1 views
0

Gibt es eine sauberere Möglichkeit, mehrere Ausnahmetypen für einen einzelnen try-Block zu behandeln? Wie Sie unten sehen werden, haben wir einen spezifischen Code, der für die verschiedenen Catch-Anweisungen ausgeführt werden soll.Behandlung mehrerer Ausnahmetypen für einen Try-Block

Diese Funktion ist eine von vielen, die die Wiederholungsversuch-Fanglogik verwenden. Ist es möglich, diesen wiederholten Fangcode irgendwie zu beseitigen?

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

Fangen Sie 'Stripe \ Error \ Base' statt der spezifischen – ShiraNai7

Antwort

0

Alle diese Fehler erweitern Stripe\Error\Base, so Stripe\Error\Base fangen sollten die speziellere decken.

Das Gesagte, Stripe bietet verschiedene Arten von Ausnahmen, weil Sie verschiedene Aktionen in Reaktion auf die verschiedenen Arten tun sollten. Eine RateLimit Ausnahme ist etwas, das Sie in die Warteschlange stellen und später erneut versuchen sollten. Eine Ausnahme von Card ist etwas, das Sie dem Benutzer zur Fehlerbehebung zurückgeben sollten. Ein Authentication Fehler könnte bedeuten, dass Ihre gesamte App keine Kreditkarten akzeptieren kann, weil Ihr API-Token fehlt/falsch ist und Sie $$$ verlieren.

Verwandte Themen