2013-08-28 31 views
0

我正在學習越來越多的關於ruby的知識,並且寫了一個超時的腳本(做幾個API調用)。我是否必須在使用Ruby的循環內拯救異常?

我知道我需要像這樣的東西來rescue異常:

rescue Timeout::Error => e 
    # log #{e} for later, maybe 
end 

我的問題是,我應該排rescue塊。由於我在多個循環中進行了幾次API調用,我是否需要將該塊放在每個API循環中?我寧願只在腳本的末尾寫一次rescue塊,並在腳本的每個循環中使用它。我正在使用紅寶石1.9.3。

+0

拿Avdi的書,去那個... –

+2

我認爲答案是,它取決於你想要定位何時/何地發生異常。例如,如果你想看到一個消息,指出哪個API調用超時,那麼你需要爲每個API調用一個'rescue'。 – lurker

回答

1

它主要取決於你如何處理錯誤。

例如,如果您希望錯誤不會中止循環運行,請捕獲循環內的異常,您可以記錄錯誤並繼續下一次迭代。

如果錯誤是「致命的」,並且您不能(或不想)繼續循環,您可以在外面捕獲它。

+0

這是有道理的。我通過腳本安排了大約10,000封電子郵件,重要的是所有10,000個電子郵件都可以滿足他們的需求。我想我會在循環外捕獲異常並強制它刪除所有預定的電子郵件,然後我可以重新運行腳本來重新安排它們。似乎不是最有效的想法,但現在就足夠了。謝謝您的幫助! – Luigi

相關問題