8

私はrubyラッパー(createsend-ruby)を使用してCampaignMonitorのAPIを操作し ていますが、エラー/例外処理に関して何をお勧めするのか疑問に思っています。私はbegin/rescue / endを次のように使用することを考えていましたが、この種のこと(サードパーティのAPIを扱っている場合)にもっと良いテクニックがあるかどうかを知りたいだけです。

begin
  list_id = CreateSend::List.create client_id, title, unsubscribe_page, confirmed_opt_in, confirmation_success_page
rescue Exception => e
  logger.error "[error] CampaignMonitor error: #{e}"
  return false
end

たとえば、特定の例外をキャッチして個別に処理しようとしますか?

rescue CreateSend::BadRequest => e

それとも、これは個人の好みやアプリの要件の問題ですか?

お時間をいただきありがとうございます!

4

1 に答える 1

9

私は通常、それらすべてをキャッチしてそこから進むために、1つの例外から始めます。頻繁に発生する特定のエラーがある場合、または別のエラーとは異なる方法で処理する必要がある場合は、下部のレスキューブロックの上に別のレスキューブロックを追加するだけで、例外がそこでキャッチされます。あなたはそれを正しくやっています:)

可能な場合は避けてください。rescue Exception単純なrescue方法でうまくいくはずです。

明確にするために、次のことを確認するだけでなく、任意の数の救助を行うことができます。

begin
  do_something
rescue CS::BadRequest => e
  logger.error "..."
rescue CS::TimeoutError => e
  do_something_that_retries
rescue => e
  logger.error "..."
ensure
  send_email_to_admin
end
于 2012-06-14T19:35:07.723 に答える