MST

星途 面试题库

面试题:Ruby异常处理之多层嵌套

假设有一个多层嵌套的方法调用结构,例如`method_a`调用`method_b`,`method_b`调用`method_c`,每个方法都可能抛出不同类型的异常(`method_a`可能抛出`CustomErrorA`,`method_b`可能抛出`CustomErrorB`,`method_c`可能抛出`CustomErrorC`)。请设计一个合理的异常处理机制,确保每个异常都能被正确捕获和处理,同时要考虑异常处理的顺序和如何向上层传递异常。请给出完整的Ruby代码示例。
37.3万 热度难度
编程语言Ruby

知识考点

AI 面试

面试题答案

一键面试
class CustomErrorA < StandardError; end
class CustomErrorB < StandardError; end
class CustomErrorC < StandardError; end

def method_c
  raise CustomErrorC, "Error in method_c"
end

def method_b
  begin
    method_c
  rescue CustomErrorC => e
    puts "Caught CustomErrorC in method_b: #{e.message}"
    raise CustomErrorB, "Wrapped error from method_c"
  end
end

def method_a
  begin
    method_b
  rescue CustomErrorB => e
    puts "Caught CustomErrorB in method_a: #{e.message}"
    raise CustomErrorA, "Wrapped error from method_b"
  end
end

begin
  method_a
rescue CustomErrorA => e
  puts "Caught CustomErrorA at top level: #{e.message}"
end