Jak mogę ponownie użyć kodu obsługi wyjątków dla wielu funkcji w Pythonie?Jak mogę ponownie użyć kodu obsługi wyjątków dla wielu funkcji w Pythonie?
Pracuję nad projektem, który będzie korzystać z biblioteki Stripe Python. https://stripe.com/docs/api/python#errors
To przykład kodu z ich dokumentów.
try:
# Use Stripe's bindings...
pass
except stripe.error.CardError, e:
# Since it's a decline, stripe.error.CardError will be caught
body = e.json_body
err = body['error']
print "Status is: %s" % e.http_status
print "Type is: %s" % err['type']
print "Code is: %s" % err['code']
# param is '' in this case
print "Param is: %s" % err['param']
print "Message is: %s" % err['message']
except stripe.error.InvalidRequestError, e:
# Invalid parameters were supplied to Stripe's API
pass
except stripe.error.AuthenticationError, e:
# Authentication with Stripe's API failed
# (maybe you changed API keys recently)
pass
except stripe.error.APIConnectionError, e:
# Network communication with Stripe failed
pass
except stripe.error.StripeError, e:
# Display a very generic error to the user, and maybe send
# yourself an email
pass
except Exception, e:
# Something else happened, completely unrelated to Stripe
pass
Muszę napisać kilka funkcji, które wykonują różne wywołania w systemie Stripe w celu przetwarzania moich transakcji. Na przykład; odzyskać token, utworzyć klienta, obciążyć kartę itd. Czy muszę powtórzyć kod try/except w każdej funkcji, czy istnieje sposób na dynamiczne przekształcanie zawartości bloku try?
Chciałbym używać tych różnych funkcji w moim widoku widoku kodu jako warunków warunkowych, więc jeśli mógłbym otrzymać komunikat o błędzie/sukcesie od każdego z nich, byłoby to pomocne.
Czy brałeś pod uwagę dekoratora? – jonrsharpe
Tutaj można również użyć menedżera kontekstów, jeśli nie chcesz, aby obsługa wyjątków była stosowana do całej funkcji. – dano