Ruby retry语句

在 Ruby 中,我们可以使用 rescue 块捕获异常,然后使用 retry 语句从开头开始执行 begin 块。

Ruby retry语句详解

语法

begin # 这段代码抛出的异常将被下面的 rescue 子句捕获 rescue # 这个块将捕获所有类型的异常 retry # 这将把控制移到 begin 的开头 end

说明

在 rescue 中使用 retry 语句。

02_Ruby异常.png

案例

retry语句处理

文件打开的 retry 语句处理

#!/usr/bin/ruby -w # -*- coding : utf-8 -*- puts "HaiCoder(www.haicoder.net)" begin file = open("/unexistant_file") if file puts "File opened successfully" end rescue fname = "existant_file" retry end

运行后,输出如下:

以下是处理流程:

  1. 打开时发生异常。
  2. 跳到 rescue。fname 被重新赋值。
  3. 通过 retry 跳到 begin 的开头。
  4. 这次文件成功打开。
  5. 继续基本的过程。

注意:如果被重新命名的文件不存在,本实例代码会无限尝试。所以异常处理时,谨慎使用 retry。

Ruby retry语句总结

在 Ruby 中,我们可以使用 rescue 块捕获异常,然后使用 retry 语句从开头开始执行 begin 块。