處理多個異常
你可以在同一 rescue
宣告中處理多個錯誤:
begin
# an execution that may fail
rescue FirstError, SecondError => e
# do something if a FirstError or SecondError occurs
end
你還可以新增多個 rescue
宣告:
begin
# an execution that may fail
rescue FirstError => e
# do something if a FirstError occurs
rescue SecondError => e
# do something if a SecondError occurs
rescue => e
# do something if a StandardError occurs
end
rescue
塊的順序是相關的:第一個匹配是執行的匹配。因此,如果你將 StandardError
作為第一個條件並且所有異常都繼承自 StandardError
,則其他 rescue
語句將永遠不會被執行。
begin
# an execution that may fail
rescue => e
# this will swallow all the errors
rescue FirstError => e
# do something if a FirstError occurs
rescue SecondError => e
# do something if a SecondError occurs
end
有些塊具有隱式異常處理,如 def
,class
和 module
。這些塊允許你跳過 begin
語句。
def foo
...
rescue CustomError
...
ensure
...
end