Ruby 教程 之 Ruby 异常 5
Ruby 异常
异常和执行总是被联系在一起。如果您打开一个不存在的文件,且没有恰当地处理这种情况,那么您的程序则被认为是低质量的。
使用 raise 语句
您可以使用 raise 语句抛出异常。下面的方法在调用时抛出异常。它的第二个消息将被输出。
语法
raise
或
raise "Error Message"
或
raise ExceptionType, "Error Message"
或
raise ExceptionType, "Error Message" condition
第一种形式简单地重新抛出当前异常(如果没有当前异常则抛出一个 RuntimeError)。这用在传入异常之前需要解释异常的异常处理程序中。
第二种形式创建一个新的 RuntimeError 异常,设置它的消息为给定的字符串。该异常之后抛出到调用堆栈。
第三种形式使用第一个参数创建一个异常,然后设置相关的消息为第二个参数。
第四种形式与第三种形式类似,您可以添加任何额外的条件语句(比如 unless)来抛出异常。
实例
!/usr/bin/ruby
begin
puts 'I am before the raise.'
raise 'An error has occurred.'
puts 'I am after the raise.'
rescue
puts 'I am rescued.'
end
puts 'I am after the begin block.'
以上实例运行输出结果为:
I am before the raise.
I am rescued.
I am after the begin block.
另一个演示 raise 用法的实例:
实例
!/usr/bin/ruby
begin
raise 'A test exception.'
rescue Exception => e
puts e.message
puts e.backtrace.inspect
end
以上实例运行输出结果为:
A test exception.
["main.rb:4"]