我在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行?很明顯,您發佈的錯誤消息和您發佈的代碼不屬於一個整體。不幸的是,如果我們不知道代碼和錯誤信息是什麼,那麼我們無法幫助您。 –