Ruby 中 begin-rescue-else-ensure 语句的用法?

· 约 3 分钟读完 · 第 92 / 199 章

推荐答案

本题详细解读

begin-rescue-else-ensure 语句的结构

begin-rescue-else-ensure 是 Ruby 中用于异常处理的一种结构。它的基本结构如下:

begin 块

begin 块包含可能会抛出异常的代码。如果代码执行过程中发生异常,程序会立即跳转到 rescue 块。

rescue 块

rescue 块用于捕获并处理异常。你可以指定要捕获的异常类型,例如 SomeError。捕获的异常对象可以通过 => e 赋值给变量 e,以便在块内使用。

else 块

else 块是可选的,只有在 begin 块中的代码没有抛出任何异常时才会执行。它通常用于处理没有异常发生时的逻辑。

ensure 块

ensure 块也是可选的,但无论 begin 块中的代码是否抛出异常,ensure 块中的代码都会执行。它通常用于释放资源或执行清理操作。

示例代码解析

  • 如果 risky_code 抛出 SomeError 异常,程序会执行 rescue 块,输出 Caught an error: ...。
  • 如果 risky_code 没有抛出异常,程序会执行 else 块,输出 No errors occurred!。
  • 无论是否抛出异常,ensure 块都会执行,输出 This will always run.。