拯救错误啥都不做?

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

无论我使用什么输出消息,无论是STDERRSTDOUTlog.errorpputs 还是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 访问它

以上是关于拯救错误啥都不做?的主要内容,如果未能解决你的问题,请参考以下文章

React 类:setState 啥都不做(并且没有报告错误)[重复]

IOS Ad Hoc 分发链接啥都不做

JQuery 表单验证啥都不做

“git diff”啥都不做

Mongoose - 保存功能啥都不做

如何修复“警告:useLayoutEffect 在服务器上啥都不做”?