基本錯誤處理塊

讓我們做一個函式來劃分兩個數字,這是非常信任它的輸入:

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