异常处理结构
begin
... # 正常运行代码
rescue Exception1
... # 处理Exception1类型的错误
rescue Exception2
... # 处理Exception2类型的错误
rescue => err
... # 处理其他错误
ensure
... # 这里的代码在发生错误后总是会被执行,可以做一些清理工作
end
下面一个简单的示例,演示了捕获除数为零时发生的错误
begin
y = 10
z = 0
x = y / z
puts x
rescue ZeroDivisionError
puts "除数为0"
rescue => err
puts err
end
抛出异常
- raise: 简单抛出一个未处理的异常
- raise"message":抛出一个描述为message的异常
- raise ExceptionType: 抛出一个某种错误类型ExceptionType的异常
- raise ExceptionType,"message" : 抛出一个某种错误类型ExceptionType的异常,并指定错误描述。
恢复执行
y = 10
z = 0
begin
x = y / z
puts x
rescue ZeroDivisionError
z = 1
retry
rescue => err
puts err
end
注意:使用retry很容易导致程序无限循环下去,使用时应该特别小心
网友评论