【问题标题】: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 是的,这看起来很有用,我现在就试试。谢谢。

标签: ruby ruby-on-rails-4 exception exception-handling mailchimp


【解决方案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 访问它
猜你喜欢
  • 1970-01-01
  • 2013-11-27
  • 2015-06-13
  • 2015-07-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-08
  • 1970-01-01
相关资源
最近更新 更多