ruby异常处理

begin
    num = 0
    de = 0 
    value = num/de
rescue ZeroDivisionError => ex
    puts "error,divede zero"   # error,divede zero
    puts ex                           # divided by 0
    puts ex.class                   # ZeroDivisionError
    puts ex.class.superclass  # StandardError
    puts ex.class.superclass.superclass  # Exception
    puts ex.class.superclass.superclass.superclass  # Object
ensure
    puts "over"                      # over
end

在异常产生后,如果相应的rescue语句被匹配到,那么这个异常对象会被复制到ex中,而ensure后的代码永远都会被执行到。
ruby里,异常类的基类是Exception。

recuse不加参数默认是匹配StandardError类型的异常。

当抛出一个异常时,可以使用Ruby内置的异常类,也可以自定义自己的异常类。如果使用自定义的异常类,那么这个异常类应该是StandardError类直接或间接的子类。如果不这么做,那么默认情况下,这个异常不能正确地被捕捉。

posted on 2013-12-29 13:25  秋叶leaf  阅读(439)  评论(0)    收藏  举报