当我运行下面的代码时,由于argumenterror,援救似乎被忽略了。
来自ruby的argumenterror错误消息出现在控制台上,但my puts消息没有。
我试着用typeerror和zerodivisionerror进行营救,结果成功了。

def divide(a, b)
    begin
        a.to_s + ' divided by ' + b.to_s + ' is ' + (a/b).to_s
    rescue ArgumentError
        puts 'there must be two arguments'
    end
end

divide(4)

最佳答案

异常不是在函数内部引发的,而是在调用时引发的,因此您需要在其他地方捕获它:

def divide(a, b)
  a.to_s + ' divided by ' + b.to_s + ' is ' + (a/b).to_s
end

begin
  divide(4)
rescue ArgumentError
  puts 'there must be two arguments'
end

虽然这样做有效,但是捕获ArgumentError是一个非常糟糕的主意,因为它指示代码中有一个错误,您不应该从中恢复。

09-07 20:45