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