gpt4 book ai didi

Ruby - Proc.call - 捕获异常

转载 作者:行者123 更新时间:2023-12-05 08:09:29 25 4
gpt4 key购买 nike

我在捕获调用 Proc 对象 的异常和错误时遇到问题。查看我的代码:

def method1
.. do something ...
end

def method2
.. do something ...
end

def run_method_safely(proc_obj)
begin
proc_obj.call
rescue => e
puts "Error man!"
... do something ...
end
end

我有几个方法(这里我只有 method1, method2 但在代码中我有更多方法)由方法 run_method_safely 运行。我这样做是因为我不想让每个方法都在 begin-rescue block 中,所以我写了一个方法来处理这个问题。见:

.
run_method_safely(Proc.new { method1 })
run_method_safely(Proc.new { method2 })
.

问题是 proc_obj.call 执行时出现错误(缺少方法,Webdriver - 未找到此类元素或其他)救援 block 未执行,程序正在运行,就像什么都没发生一样.

有人知道如何从 Proc 代码中捕获错误和异常吗?

最佳答案

你确定你的样本是正确的吗?

def safe(proc)
begin
proc.call
rescue
puts "error"
end
end

def m1
puts "m1"
raise
end

def m2
puts "m2"
end

safe(Proc.new { m1 })
safe(Proc.new { m2 })

打印

m1
error
m2

对我来说。

顺便说一句:您不需要将调用包装在 Proc 中,您可以直接传递 Method 对象。

safe(method(:m1))

关于Ruby - Proc.call - 捕获异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36736090/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com