自定义整数转换的异常消息 - Ruby

时间:2017-03-20 22:48:42

标签: ruby exception error-handling

我正在尝试做一个safe_Int(n)。

如果输入不是"整数"值(例如:123或' 123')它应该返回TypeError并且消息:"#{n}必须是数字"。

这是我做的:

def safe_Int(n)
 begin
  Integer(n) rescue TypeError
 rescue TypeError => e
  puts "#{n} is not a number" 
 end 
end

我无法显示我想要的消息。

我得到"没有将Class隐式转换为Integer"

如何自定义错误消息?

2 个答案:

答案 0 :(得分:1)

确定!找到我想要的东西:

def safe_Int(n)
Integer(n)
rescue
  raise TypeError.new "#{n} is not a number!"
end

obs:我没有显示完整的代码,所以我不会成为挑战的破坏者。

答案 1 :(得分:0)

不是说我认为这是一个好主意,但Integer(n)提出ArgumentError而不是TypeError,因此您的代码应该是这样的:

def safe_int(n)
  Integer(n)
rescue ArgumentError => e
  puts "#{n} is not a number"
end