私はストライプを支払いプロセッサーとして使用します。レスキューステートメントを繰り返し実行する
アプリケーション内で、Stripeに請求を送信したり、他のタイプのプロセスに対してリクエストを送信します。基本的には、以下のような同じエラー処理の定型文を使用します。
rescue Stripe::InvalidRequestError => e,
# do something
rescue Stripe::AuthenticationError => e,
# do something
rescue Stripe::APIConnectionError => e,
# do something
rescue Stripe::StripeError => e
# do something
rescue => e
# do something
end
私は間違いなくrescue
各APIの呼び出しでこれらのエラーの種類ごと、それは定型コードの多くのですが、私はちょうどrescue
それらのすべてのに愛し、そのようなことを行うための方法を構築したいこともできますがロギングとして、通知を送信する。
これらを1つの例外ハンドラに、以下のようなよりクリーンな方法(乾いたもの)でバンドルする方法はありますか?
def call
plan = Plan.new(attrs)
return plan unless plan.valid?
begin
external_card_plan_service.create(api_attrs)
rescue Exceptions::Stripe => e
plan.errors[:base] << e.message
return plan
end
plan.save
plan.update(is_active: true, activated_at: Time.now.utc)
plan
end
ストライプがあなたの場合、これらの例外は共通の例外を継承することができます。それは...ですか? –