基本错误处理块

让我们做一个函数来划分两个数字,这是非常信任它的输入:

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