應始終執行的程式碼
如果有你想要執行的程式碼,請使用 ensure
子句。
def divide(x, y)
begin
z = x/y
return z
rescue ZeroDivisionError
puts "Don't divide by zero!"
rescue TypeError
puts "Division only works on numbers!"
return nil
rescue => e
puts "Don't do that (%s)" % [e.class]
return nil
ensure
puts "This code ALWAYS runs."
end
end
當出現錯誤時,將執行 ensure
子句:
> divide(10, 0)
Don't divide by zero! # rescue clause
This code ALWAYS runs. # ensure clause
=> nil
當沒有錯誤時:
> divide(10, 2)
This code ALWAYS runs. # ensure clause
=> 5
例如,當你想要確保關閉檔案時,ensure 子句非常有用。
請注意,與 else
子句不同,ensure
子句在 begin
或 rescue
子句返回值之前執行。如果 ensure
子句有一個 return
,它將覆蓋任何其他子句的 return
值!