本文简要介绍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类。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。