我在ruby中的代码下执行。在Ruby中,将异常与字符串连接时抛出异常
代码:
def doCalc
begin
print("Enter a number: ")
aNum = gets().chomp()
result = 100/aNum.to_i
rescue Exception => e
result = 0
puts("Error: " + e + "\nPlease try again.")
retry # retry on exception
else
msg = "Result = #{result}"
ensure
msg = "You entered '#{aNum}'. " + msg
end
return msg
end
puts(doCalc)
四处错误:
retry.rb:15:in
+': can't convert nil into String (TypeError) from retry.rb:15:in
ensure in doCalc' from retry.rb:15:indoCalc' from retry.rb:21:in
'
我在控制台上输入0,因为我想检查这个错误处理代码是如何工作的。基本上想检查工作的重试。我的理解是如何重试作品,但因为它说,它已分配例外“E”是零,其水湿是情况下,如果我改变为线#15这个错误让我困惑:
puts e
则没有错误出现。其实它打印:
divided by 0
我是经验丰富的java,但新的红宝石。我在这里错过了什么?
你确定这不是这部分'味精=“您输入' #{aNum}'。“+ msg',因为'msg'可能在这里没有?特别是因为你堆栈跟踪明确引用问题是确保块。 – engineersmnky
作为最后一个提示put将尝试和调用对象,所以在这种情况下,你应该添加'e.to_s'作为你的字符串程序集的一部分 – engineersmnky
你的错误信息是没有意义的。你的代码中甚至没有21行,那么它怎么可能指向第21行?很明显,您发布的错误消息和您发布的代码不属于一个整体。不幸的是,如果我们不知道代码和错误信息是什么,那么我们无法帮助您。 –