Rails:异常与条件语句

时间:2010-11-09 13:47:49

标签: ruby-on-rails ruby-on-rails-3

我有一个Rails应用程序,可以查询第三方Web服务。我正在尝试决定如何处理无效的响应(例如服务不可用)。

我正在考虑的两个选项是:

1)WebService在出错时返回nil

response = WebService.query
if response
  # Query was successful
else
  # Invalid response
end

2)WebService在错误

上引发异常
begin
  response = WebService.query
rescue
  # Invalid response
end
# Query was successful

每种方法有哪些优缺点?哪一个是“Rails方式”?

非常感谢。

1 个答案:

答案 0 :(得分:4)

条件语句通常比异常更快。见How slow are (Ruby) Exceptions?

关键是异常和条件陈述具有不同的含义。当您不期望某些事情失败时,您会使用异常,并且当发生错误时是异常事件。相反,条件语句控制流。这与this post from Thoughtbot中表达的概念相同。