在 Ruby 中,如果提供了 else 子句,它一般是放置在 rescue 子句之后,任意 ensure 之前。else 子句的主体只有在代码主体没有抛出异常时执行。
begin
#.. 过程
#.. 抛出异常
rescue
#.. 处理错误
else
#.. 如果没有异常则执行
ensure
#.. 最后确保执行
#.. 这总是会执行
end
else 子句的主体只有在代码主体没有抛出异常时执行。
没有抛出异常的时候执行 else 语句
#!/usr/bin/ruby -w
# -*- coding : utf-8 -*-
puts "HaiCoder(www.haicoder.net)"
begin
# 抛出 'A test exception.'
puts "I'm not raising exception"
rescue Exception => e
puts e.message
puts e.backtrace.inspect
else
puts "Congratulations-- no errors!"
ensure
puts "Ensuring execution"
end
运行后,输出如下:
使用 $! 变量可以捕获抛出的错误消息。
在 Ruby 中,如果提供了 else 子句,它一般是放置在 rescue 子句之后,任意 ensure 之前。else 子句的主体只有在代码主体没有抛出异常时执行。