使用 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。