本文簡要介紹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類。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。
