【发布时间】:2013-07-13 15:41:37
【问题描述】:
我正在为 Ruby Rails 应用程序编写测试,如果 Ruby 无法连接到我的 Redis 服务器,我有一段代码可以捕捉到它抛出的错误。目前,代码如下所示:
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
根据我尝试运行测试时的堆栈跟踪,该代码的第二行 sn-p -- config.before(:all) {...} -- 抛出 Redis::CannotConnectError 。经过大量的“e.class.superclass.superclass...”命令,我确定这个错误继承自StandardError。
之后我就卡住了。我尝试用“rescue Redis::CannotConnectError”捕捉错误,然后是“rescue”,最后是“rescue Exception”,但仍然抛出错误。但是,我在Ruby命令提示符下尝试了同样的事情,并且每次都捕获到异常
谁能帮我弄清楚这里发生了什么?谢谢!
【问题讨论】:
-
我不认为这是 Ruby 的问题?你使用 RSpec,对吗?
标签: ruby-on-rails error-handling redis rescue