Ruby 教程 之 Ruby 异常 3
Ruby 异常
异常和执行总是被联系在一起。如果您打开一个不存在的文件,且没有恰当地处理这种情况,那么您的程序则被认为是低质量的。
使用 retry 语句
您可以使用 rescue 块捕获异常,然后使用 retry 语句从开头开始执行 begin 块。
语法
begin
# 这段代码抛出的异常将被下面的 rescue 子句捕获
rescue
# 这个块将捕获所有类型的异常
retry # 这将把控制移到 begin 的开头
end
实例
!/usr/bin/ruby
begin
file = open("/unexistant_file")
if file
puts "File opened successfully"
end
rescue
fname = "existant_file"
retry
end
以下是处理流程:
打开时发生异常。
跳到 rescue。fname 被重新赋值。
通过 retry 跳到 begin 的开头。
这次文件成功打开。
继续基本的过程。
注意:如果被重新命名的文件不存在,本实例代码会无限尝试。所以异常处理时,谨慎使用 retry。