我有一个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方式”?
非常感谢。
答案 0 :(得分:4)
条件语句通常比异常更快。见How slow are (Ruby) Exceptions?
关键是异常和条件陈述具有不同的含义。当您不期望某些事情失败时,您会使用异常,并且当发生错误时是异常事件。相反,条件语句控制流。这与this post from Thoughtbot中表达的概念相同。