» Ruby快速入门 » 1. 基础篇 » 1.6 错误处理

错误处理

在Ruby中,通常使用 beginrescueensure 块来进行错误处理。

begin
  # 可能引发异常的代码
  result = 10 / 0
rescue ZeroDivisionError => e
  # 处理特定的异常
  puts "Error: #{e.message}"
rescue StandardError => e
  # 处理其他类型的异常
  puts "An unexpected error occurred: #{e.message}"
ensure
  # 无论如何都会执行的代码(可选)
  puts "This code always runs."
end
  • begin 块包含可能引发异常的代码。
  • rescue 块捕获特定类型的异常。在这个例子中,捕获了 ZeroDivisionErrorStandardError
  • ensure 块包含无论是否发生异常都将被执行的代码。它是可选的,如果不需要可以省略。

处理多个异常

可以有多个 rescue 块来处理不同类型的异常。

begin
  # 可能引发异常的代码
  result = 10 / 0
rescue ZeroDivisionError => e
  puts "Error: Division by zero - #{e.message}"
rescue ArgumentError => e
  puts "Error: Invalid argument - #{e.message}"
rescue StandardError => e
  puts "An unexpected error occurred: #{e.message}"
end

使用 else

else 块用于 begin 块中没有发生异常时执行指定代码。

begin
  # 可能引发异常的代码
  result = 10 / 2
rescue ZeroDivisionError => e
  puts "Error: Division by zero - #{e.message}"
else
  # 如果没有异常发生时执行的代码
  puts "Result: #{result}"
end

抛出异常

你可以使用 raise 关键字抛出异常,指定异常类型和可选的错误消息。

def some_method(value)
  raise ArgumentError, "Invalid value" if value.nil?

  # 其余代码
end

代码挑战

编写一个 Ruby 函数 safe_divide,该函数接受两个参数(numeratordenominator),并返回除法的结果。记得要优雅地处理可能发生的除以零错误。

Loading...
> 此处输出代码运行结果
上页
下页