本文簡要介紹ruby語言中 Exception類
的用法。
Exception
類及其子類用於在begin ... end
塊中的 Kernel#raise
和rescue
語句之間進行通信。
Exception
對象攜帶有關異常的信息:
-
它的類型(異常的類)。
-
可選的說明性消息。
-
可選的回溯信息。
Exception
的一些內置子類具有其他方法:例如, NameError#name
。
默認值
兩個 Ruby 語句具有默認異常類:
-
raise
:默認為RuntimeError
。 -
rescue
:默認為StandardError
。
全局變量
當引發異常但尚未處理時(在 rescue
、 ensure
、 at_exit
和 END
塊中),將設置兩個全局變量:
-
$!
包含當前異常。 -
$@
包含它的回溯。
自定義例外
為了提供附加或替代信息,程序可以創建從內置異常類派生的自定義異常類。
一個好的做法是讓庫創建單個 “generic” 異常類(通常是 StandardError
或 RuntimeError
的子類),並讓其其他異常類派生自該類。這允許用戶挽救通用異常,從而捕獲該庫可能引發的所有異常,即使該庫的未來版本添加了新的異常子類。
例如:
class MyLibrary
class Error < ::StandardError
end
class WidgetError < Error
end
class FrobError < Error
end
end
要同時處理 MyLibrary::WidgetError 和 MyLibrary::FrobError,庫用戶可以挽救 MyLibrary::Error。
內置 Exception
類
Exception
的內置子類是:
-
fatal
相關用法
- Ruby Exception.backtrace用法及代碼示例
- Ruby Extend類用法及代碼示例
- Ruby ERB.location=用法及代碼示例
- Ruby Enumerable.any?用法及代碼示例
- Ruby Enumerable min_by()用法及代碼示例
- Ruby Enumerable each_witth_object()用法及代碼示例
- Ruby ErrorHighlight.spot用法及代碼示例
- Ruby Enumerable.slice_before用法及代碼示例
- Ruby Enumerable each_cons()用法及代碼示例
- Ruby Enumerator each_with_index用法及代碼示例
- Ruby Encoding.compatible?用法及代碼示例
- Ruby Enumerable.uniq用法及代碼示例
- Ruby Enumerator each_with_object用法及代碼示例
- Ruby ERBIO類用法及代碼示例
- Ruby ENV.empty?用法及代碼示例
- Ruby Enumerable uniq()用法及代碼示例
- Ruby Enumerable.find_all用法及代碼示例
- Ruby Enumerator.peek_values用法及代碼示例
- Ruby Enumerable.max用法及代碼示例
- Ruby Enumerable.map用法及代碼示例
- Ruby Enumerable min()用法及代碼示例
- Ruby Enumerable.min_by用法及代碼示例
- Ruby Enumerable.find_index用法及代碼示例
- Ruby Enumerator類用法及代碼示例
- Ruby Enumerable find_index()用法及代碼示例
注:本文由純淨天空篩選整理自ruby-lang.org大神的英文原創作品 Exception類。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。