拯救错误啥都不做?
Posted
技术标签:
【中文标题】拯救错误啥都不做?【英文标题】:Rescuing error does nothing?拯救错误什么都不做? 【发布时间】:2016-06-21 21:07:58 【问题描述】:我正在尝试用这种方法挽救一个异常:
def template_deleted
mailchimp_client.templates.info(mailchimp_id)
rescue Mailchimp::InvalidTemplateError => error
puts "Template deleted in Mailchimp: #error"
return true
else
return false
end
无论我使用什么输出消息,无论是STDERR
、STDOUT
、log.error
、p
、puts
还是print
,都不会输出到环境日志中。这肯定会返回错误,因为 Mailchimp 中肯定不存在该模板。
当我在控制台中尝试相同的代码时,我可以很好地读取错误,所以要么是救援本身有问题(即我的方法返回了不应该的false
),要么是有问题以我输出的方式。
【问题讨论】:
你不清楚。您是否在控制台中获取输出,但想将其定向到日志? 对不起,我更新了这个问题更清楚了。 您是否尝试使用logger.debug
而不仅仅是puts
?
可能抛出的异常不是您所期望的。要检查异常的类别,请使用此模型:begin 1/0 ; rescue Exception => error ; puts error.class end
@peak 是的,这看起来很有用,我现在就试试。谢谢。
【参考方案1】:
要在当前环境的日志文件中输出某些内容,请像这样使用Rails logger:
logger.debug "Template deleted in Mailchimp: #error"
您可以将debug
方法调用替换为上面链接中简要描述的任何日志级别名称。另外不要忘记确保您在正确的环境中运行!
【讨论】:
是的,这也没有给我任何东西。 @CD-RUM 您需要阅读答案中的链接,因为您可能需要更改日志级别。此外,请确保您查看的是当前正在运行的环境的正确性。 哇,不是我所期待的。它返回了NameError (undefined local variable or method 'logger' for class Whatever
。
loggger
仅存在于 Rails 范围内。如果您在 PORO 课程上尝试这样做,那么您的做法是错误的。您也可以使用Rails.logger.debug
访问它以上是关于拯救错误啥都不做?的主要内容,如果未能解决你的问题,请参考以下文章