【问题标题】:Multiple begin rescue block多个开始救援块
【发布时间】:2021-05-13 14:00:46
【问题描述】:

有一个代码,其中每一行都可能导致异常,即使任何代码行发生错误,我也想继续执行

我将按照下面提到的方式实现它

begin
   code that might throw an exception
rescue
   logger
end

begin
   code that might throw an exception
rescue
   logger
end

begin
   code that might throw an exception
rescue
   logger
end

begin
   code that might throw an exception
rescue
   logger
end

有没有更好的方法来处理这种类型的错误处理如果是请解释我怎样才能写出更好的代码

【问题讨论】:

  • 可能抛出异常的代码是一些私有函数、honebadger 通知、NewRelic 通知
  • 出现异常。只需将所有代码包装在一个开始/救援中。你所做的一切毫无意义,尤其是在预期错误和真正异常之间存在巨大差异的情况下。

标签: ruby error-handling coding-style


【解决方案1】:

每一行都可能导致异常

请解释我怎样才能写出更好的代码

您可以编写更好的代码,方法是不要将代码设计成每一行都会引发异常。尤其是这样的想法,即代码应该“向前耕耘,无论是否留下任何错误痕迹”。

在极端情况下,您的代码可能包含各种拼写错误/无效的方法调用/其他任何内容,并且您提出的设计将尝试继续执行其余代码,无论它有多损坏。

但是,如果没有看到一些实际代码,我真的无法就如何做到这一点给出具体建议。

【讨论】:

  • 每一行都使用一些记录器或一些松弛或电子邮件发送错误信息,这就是为什么可能会发生异常的情况,否则我完全同意你的评论
  • 为什么向 logger/slack/email 发送信息可能会引发 EXCEPTION? (尤其是您可以放心忽略的例外情况!!)这是一个糟糕的设计,我重申上述建议。
  • 好的,我会研究一下,以便我可以更好地设计我的代码,谢谢
猜你喜欢
  • 2013-04-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-11
  • 1970-01-01
  • 2012-02-26
  • 1970-01-01
  • 2023-01-13
相关资源
最近更新 更多