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