错误处理
在Ruby中,通常使用 begin
、rescue
和 ensure
块来进行错误处理。
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
块捕获特定类型的异常。在这个例子中,捕获了ZeroDivisionError
和StandardError
。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
,该函数接受两个参数(numerator
和denominator
),并返回除法的结果。记得要优雅地处理可能发生的除以零错误。
Loading...
> 此处输出代码运行结果