【问题标题】:Ruby On Rails Rescue blockRuby On Rails 救援块
【发布时间】:2023-01-13 03:58:35
【问题描述】:

我有方法

常用方法

def error_notification 
  <notification_code>
end

每当代码捕获异常时,我需要在救援块中调用此方法

例如:例子

def error_method
  begin
    <some_code>
  rescue => e
    error_notification
  end
end

没有调用所有救援块,有任何标准的方法来编写代码

【问题讨论】:

  • 您认为哪个部分不标准?

标签: ruby ruby-on-rails-4


【解决方案1】:

虽然您所展示的内容绝不会超出正常范围,但是如果您经常通过为调用创建一个包装器来使用它,您当然可以将其干燥一点。

简单示例:

def guard(&block) 
  begin 
    block.call 
  rescue => e 
    error_notification
  end
end 

然后在需要的地方使用

def error_method
  guard do 
   some_code 
  end 
end

话虽这么说,您通常会希望挽救特定错误,而不是每个StandardError,但设计决定取决于您。

此外,如果这是特定于控制器方法(您没有真正指定),ActiveSupport 提供了一个名为 rescue_from 的方法,您也可以使用它,并且通常被认为在 Rails 应用程序中更为惯用 Docs

例如,您的设置看起来像

class ApplicationController < ActionController::Base
  rescue_from StandardError, with: error_notification

  private 
    def error_notification 
      notification_code
    end
end 

【讨论】:

    猜你喜欢
    • 2012-02-26
    • 1970-01-01
    • 2020-08-26
    • 1970-01-01
    • 2011-11-08
    • 1970-01-01
    • 1970-01-01
    • 2017-11-08
    • 2018-08-12
    相关资源
    最近更新 更多