事情是这样的:
times++
@ddr = DDR::DDR.new()
执行到这里的时候,总是报错:'+@' undefied method。刚开始的时候以为是机器在重启过程中一些不稳定函数调用或者参数混乱造成的。于是改成:
times++
sleep(60 * 5)
@ddr = DDR::DDR.new()
总算是这步的错不报了,跳过去了。可是发现 times 的值在执行了多次之后没有变化。
事情的原因是:Ruby不支持 ++ 自增操作符。
begin rescue
#times++
times += 1
sleep( 60 * 5)
@ddr =
retry if times < 2
end
当 times++ 在rescue 上面的时候,代码为 syntax error,可是放到 rescue里面就不报错了,可以执行。应该是和ruby 的exceptiion机制有关。
自己挖了个大坑,block了一周的时间,收获如下:
1.在内心里有 “ruby不支持自增操作符”的印象,可是记忆不准确,也不确定。
2.解决问题的思路应该修改,把所有可能出错的原因列在纸上,一条条排除,不应该忽略简易的可能出错原因。
3.ruby学的太笼统了,很多原理不了解,加强基本知识的补充。受C++思想影响了。弄懂这不明白的点,阶段性整理。