简单的异常处理机制示例

2016/05/09 Ruby
使用异常处理机制会停止本次block代码的执行,但是本次block之后的代码可以继续执行。不使用异常处理,遇到异常时就会停止,并且之后的代码不会执行。而实际中我们不希望有异常错误的时候就中断程序,而是想让代码继续执行,所以我们需要捕捉异常

# begin
#   # Raise an error here
#   raise "Error!!"
# rescue
#   #handle the error here
# ensure
#   p "=========inside ensure block"
# end


  # ary = [1,nil,2,3,4]
  # ary.each do |i|
  #   puts i - 1
  # end

1. 异常保存到变量

begin
  ary = [1,nil,2,3,4]
  ary.each do |i|
    puts i - 1
  end
rescue => e  #异常保存到变量
  puts e
end

2. 用rescue捕获异常

begin
  ary = [1,nil,2,3,4]
  ary.each do |i|
    puts i - 1
  end
rescue NoMethodError
  puts "Method Error"
end

3. raise抛出异常

begin
  ary = [1,nil,2,3,4]
  ary.each do |i|
    raise "The i is nil" if i.nil?
    puts i - 1
  end
rescue ArgumentError
  puts "ArgumentError"
end

4. 创建异常类

class ThrowExceptionLove < Exception
  puts "Some Error"
end

begin
  raise ThrowExceptionLove, "Got Error"
rescue ThrowExceptionLove => e
  puts "Error: #{e}"
end

Exception 是异常的总类

Ruby提供了一个很好的机制来处理异常。我们附上的代码可以在开始结束块引发的异常,并使用救援条款告诉Ruby我们要处理的异常类型.

执行和异常总是要同时。如果您正在打开的文件不存在,那么,如果你没有正确处理这种情况,那么你的程序被认为是质量很差.

如果发生异常,程序停止。所以异常被用来处理各种不同类型的程序的执行过程中可能出现的错误,并采取适当的行动,而不是完全停止程序的.

Search

    Table of Contents