2010-11-09 108 views
1

我有一個查詢第三方Web服務的Rails應用程序。我試圖決定如何處理無效的回覆(例如服務不可用)。Rails:例外與條件語句

我正在考慮這兩個選項是:

1)WebService的返回出錯無

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

考慮到它的第三方,它可能會定義服務返回的內容,無或錯誤時引發異常。或者,也許兩者都有它自己不同的含義。 – shoebox639 2010-11-09 13:57:36

+0

@ shoebox639是正確的,你必須檢查第三方庫遵循哪種方法,並堅持下去......如果你試圖決定如何向其他代碼報告錯誤,那麼這是一個不同的問題。 – 2010-11-09 14:15:39

+0

爲了澄清,我知道Web服務如何返回錯誤。我的問題是關於在兩種方法之間做出決定,以向我的其他代碼報告錯誤。 – gjb 2010-11-09 14:30:37

回答

4

條件語句通常比例外語句更快。請參閱How slow are (Ruby) Exceptions?

問題是異常和條件語句有不同的含義。如果您不希望某些事情發生故障,並且發生錯誤時是異常事件,則可以使用異常事件。相反,條件語句控制流。這是在this post from Thoughtbot中表達的相同概念。

+0

兩篇非常有趣的文章,謝謝。 – gjb 2010-11-09 17:55:05