在Ruby中,處理異常情況通常使用begin
、rescue
和ensure
關鍵字。begin
塊包含可能引發異常的代碼,rescue
塊用于捕獲并處理異常,ensure
塊包含在所有情況下都會執行的代碼,無論是否發生異常。
下面是一個簡單的示例,說明如何在Ruby類定義中處理異常情況:
class MyClass
def initialize(value)
@value = value
end
def process_value
begin
# 可能引發異常的代碼
result = @value / 0
rescue ZeroDivisionError => e
# 處理異常的代碼
puts "發生錯誤:#{e.message}"
result = nil
ensure
# 無論是否發生異常都會執行的代碼
puts "處理完成"
end
result
end
end
my_object = MyClass.new(10)
puts my_object.process_value # 輸出:發生錯誤:除以零
在這個示例中,我們定義了一個名為MyClass
的類,其中包含一個名為process_value
的方法。在process_value
方法中,我們使用begin
和rescue
關鍵字捕獲并處理了ZeroDivisionError
異常。如果@value
除以0,將引發異常,并在rescue
塊中打印錯誤消息。無論是否發生異常,ensure
塊中的代碼都會執行。