【发布时间】:2013-04-24 17:37:03
【问题描述】:
我有一个失败的声明:
result = service.load_data()
现在下面会抑制错误,然后我可以检查nil
result = service.load_data() rescue nil
但是当我执行以下操作时,初始错误会直接被抛出到 UI 并且我没有得到异常的 details。
begin
result = service.load_data()
rescue => details
logger.fatal "Failed to load the data: #{details}"
end
我确信我一定遗漏了一个愚蠢的细节,但我似乎无法在这里发现问题。那么为什么不调用 rescue 块呢?
更新:我得到的错误是这样的:
getaddrinfo: nodename nor servname provided, or not known
【问题讨论】:
-
发生什么样的错误?
-
@SergioTulentsev
getaddrinfo: nodename nor servname provided, or not known(我更新了我的答案) -
检查'rescue'的拼写(你的帖子有'resuce')。
-
你还没有提供异常类,但是对于任何想要帮助的人来说,它可能是
SocketError -
另外,使用不带类的
rescue将默认为StandardError,如果您的异常类不继承自该类,它将失败。您可能需要rescue Exception或更具体地指定类。也就是说,如果是 /is/ SocketError,则继承自 StandardError,因此您的代码应该按原样工作