【问题标题】:rake still aborts on RuntimeError even though exception is rescued即使异常被救出,rake 仍然在 RuntimeError 上中止
【发布时间】:2013-07-02 19:16:33
【问题描述】:

我正在开发一个 rake 系统,我有一些新代码需要做一些一致性检查。我希望代码不会在第一个错误时退出;我希望它继续完成对其余数据的检查。如果它确实遇到一致性错误,它可能会引发异常。我正在尝试使用一个简单的构造来捕获 RuntimeError:

 begin
      <code which may throw RuntimeError...>
 rescue RuntimeError => e
      <print info about exception ...>
 end

这似乎执行了救援块;打印救援的错误信息。问题是 rake 仍然中止,即使异常已被捕获和处理。 rake 中是否有一些设置将 abort_on_exception 设置为 true?有什么办法改变这个吗?我不希望它在这个异常上中止,我只想打印错误,并继续进行其余的检查。如果完整的一致性检查报告错误,它将退出更高级别。也许我需要抛出 RuntimeError 以外的东西?我只是将 raise 与字符串参数一起使用。

【问题讨论】:

  • RuntimeError 在发生未分类的异常时引发。如果将rescue RuntimeError =&gt; e 替换为rescue =&gt; e 会发生什么?

标签: ruby exception rake


【解决方案1】:

你能试试 Exception insted of RuntimeError 异常吗

begin
  <code which may throw RuntimeError...>
rescue Exception => e
  p e.message
  p e.backtrace
end

【讨论】:

  • 感谢您的建议。我一直在研究代码,所以我不知道我是否遇到了与昨天完全相同的情况。使用“救援异常”,我发现它捕获了第一个错误,但后来又抛出了另一个“未定义的方法 `some_method' for nil:NilClass”异常。
  • 所以现在您将得到确切的错误,并且您可以尽早修复它。 :) :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-08
  • 2021-04-17
  • 1970-01-01
  • 2018-05-05
  • 1970-01-01
相关资源
最近更新 更多