在Ruby中,异常(Exception)是一种用于处理程序运行时错误或意外情况的机制。Ruby提供了一套强大的异常处理机制,允许开发者检测并响应不同类型的异常。以下是一些关于Ruby异常处理的基本概念和示例:

异常的基本结构:
begin
  # 可能会引发异常的代码
rescue SomeException => e
  # 处理特定类型的异常
  puts "Caught an exception: #{e.message}"
rescue AnotherException => e
  # 处理另一种类型的异常
  puts "Caught another exception: #{e.message}"
else
  # 如果没有异常发生时执行的代码块
ensure
  # 无论是否发生异常,都会执行的代码块
end

抛出异常:
def divide(x, y)
  raise ArgumentError, "Cannot divide by zero" if y.zero?
  x / y
end

begin
  result = divide(10, 0)
  puts result
rescue ArgumentError => e
  puts "Error: #{e.message}"
end

自定义异常类:
class MyCustomError < StandardError
end

def my_method
  raise MyCustomError, "This is a custom error"
end

begin
  my_method
rescue MyCustomError => e
  puts "Caught custom error: #{e.message}"
end

使用 ensure 确保资源释放:
file = nil
begin
  file = File.open("example.txt", "r")
  # 进行文件操作
rescue StandardError => e
  puts "Error: #{e.message}"
ensure
  # 确保文件关闭,即使发生异常
  file&.close
end

Exception 类层次结构:

Ruby的异常类是层次结构的,Exception 是所有异常类的父类。在处理异常时,可以选择捕获更具体的异常类,也可以选择捕获通用的 StandardError 类。




转载请注明出处:http://www.zyzy.cn/article/detail/6464/Ruby