gpt4 book ai didi

ruby-on-rails - Ruby 救援没有捕捉到 StandardError

转载 作者:可可西里 更新时间:2023-11-01 11:22:29 26 4
gpt4 key购买 nike

我正在为 Ruby Rails 应用程序编写测试,并且我有一段代码可以捕获我的 Redis 服务器在 Ruby 无法连接到它时抛出的错误。目前,代码如下所示:

begin
config.before(:all) { Resque.redis.select 1 }
config.after(:all) { Resque.redis.keys("queue:*").each { |key| Resque.redis.del key } }
rescue Exception
puts "RESCUED REDIS ERROR"
end

根据我尝试运行测试时的堆栈跟踪,该代码片段的第二行 -- config.before(:all) {...} -- 抛出一个 Redis::CannotConnectError .经过大量的“e.class.superclass.superclass...”命令,我确定这个错误继承自StandardError。

之后我就卡住了。我尝试用“rescue Redis::CannotConnectError”捕获错误,然后“rescue”,最后“rescue Exception”,但错误仍然抛出。然而,我在 Ruby 命令提示符下尝试了同样的事情,每次都捕获到异常

谁能帮我弄清楚这里发生了什么?谢谢!

最佳答案

问题是传递给 beforeafter 的 block 在定义时没有被执行;相反,它们被存储起来,然后在每个规范文件运行之前和之后由 Rspec 调用。

您可能希望将 begin/rescue 移动到 block 内:

config.before(:all) do
begin
Resque.redis.select 1
rescue Exception
puts "RESCUED REDIS ERROR"
end
end

# same for config.after(:all)

关于ruby-on-rails - Ruby 救援没有捕捉到 StandardError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17659939/

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