Ruby 关于 Ruby 异常捕捉问题

runup · 2015年12月27日 · 最后由 qinfanpeng 回复于 2015年12月28日 · 1995 次阅读

问题:对照书中的代码写下如下 ruby 异常捕捉,预计代码的返回值应该是 1,而我在终端执行的这段代码却没有返回值,我的 ruby 版本是 2.1,代码如下:

class Demo
  def divide(m)
    begin
      1/m
    rescue ZeroDivisionError => e
      m += 1
      retry
    end
  end
end

obj = Demo.new
obj.divide(0)

不可能...除非还有其他代码混杂了,贴你的终端运行结果看看

#1 楼 @quakewang windows 下的终端,ruby 版本 2.1

你最后返回没有执行任何输出,自然屏幕里面不会有输出结果,加个 puts 就好了 puts obj.divide(0)

#3 楼 @quakewang bingo 返回和输出返回值是两码事情。

Mac 终端是正常的,建议别再 windows 下折腾 Ruby。

windows 下也没问题。不知你所云。

  • puts
  • 或者进入 irb

#3 楼正解

#4 楼 @runup 是这样的,如果直接把你的代码粘贴到终端执行,确实会返回 1 的,但是你将代码放入文件中,然后用 Ruby 命令去执行,这个时候就不会返回最后一行代码的值给你了,除非你显示输出如 puts,正如@quakewang 所说。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号