有沒有辦法在ruby中做舊的「錯誤恢復下一個」例程?紅寶石「在錯誤恢復下一個」功能
我已經從其他地方動態地填充了一系列值(從MQTT主題中讀取得準確),然後我想對它們做一堆數字計算併發布結果。值應該是數字,但可能缺少或非數字。
目前我的代碼看起來像
values=[]
//values get loaded here
begin
Publish('topic1',value[0]*10+value[1])
rescue TypeError,NoMethodError,ZeroDivisionError
end
begin
Publish('topic2',value[3]/value[4])
rescue TypeError,NoMethodError,ZeroDivisionError
end
//etc etc
如果計算由於某種原因失敗的程序應該只跳過這一步,繼續。
它的作品,但肯定是一個更好的方式比所有這些相同的begin..rescue塊?畢竟Ruby是關於「DRY」的。
有沒有一種重寫上面的方法,以便在使用單個begin..rescue構造的同時仍然允許嘗試所有計算?
修訂
如何安全做這樣的事情
def safe_Publish(topic,value)
return if value.nil?
Publish(topic,value)
end
與 safe_Publish( '標題2',(值[3] /值[4]救援無))調用
主要問題是,上述捕獲所有異常不僅僅是我期待的那些讓我有點緊張。
你來自vb嗎? – texasbruce