基本错误处理块
让我们做一个函数来划分两个数字,这是非常信任它的输入:
def divide(x, y)
return x/y
end
这对于很多输入都可以正常工作:
> puts divide(10, 2)
5
但不是所有的
> puts divide(10, 0)
ZeroDivisionError: divided by 0
> puts divide(10, 'a')
TypeError: String can't be coerced into Fixnum
我们可以通过在 begin... end
块中包含危险的除法运算来检查错误来重写函数,并使用 rescue
子句输出消息并在出现问题时返回 nil
。
def divide(x, y)
begin
return x/y
rescue
puts "There was an error"
return nil
end
end
> puts divide(10, 0)
There was an error
> puts divide(10, 'a')
There was an error