Есть ли способ выполнить старую «on error resume next» в рубине?ruby "on error resume next" function
У меня есть массив значений, динамически заполняемый из других источников (читайте из тем 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
Если расчет не удается по какой-либо причине программа должна просто пропустить этот шаг и идти дальше.
Это работает, но, безусловно, лучший способ, чем все те же самые начинающие ... спасательные блоки? Ruby о «DRY» в конце концов ..
Есть ли способ переписать вышеприведенное так, чтобы была использована единственная конструкция начала .rescue, все еще позволяющая делать все расчеты?
ОБНОВЛЕНО
Как безопасно сделать что-то вроде
def safe_Publish(topic,value)
return if value.nil?
Publish(topic,value)
end
и коллировать с safe_Publish ('topic2', (значение [3]/значение [4] спасательное ноль))
Основная проблема заключается в том, что вышеупомянутый ловит ВСЕ исключения, а не только те, которые я ожидаю, что заставляет меня немного нервничать.
Вы из vb? – texasbruce