ROR:你能在每个控制器的基础上配置一个异常处理程序吗?

时间:2013-02-02 00:30:21

标签: ruby-on-rails

在我的ROR项目中,我有一个控制器,在错误传播回调用者之前,我希望始终捕获异常以进行一些清理。这可以在ROR中完成吗?我想要一个在控制器中遇到任何异常时将被调用的钩子。

2 个答案:

答案 0 :(得分:1)

您可以使用around_filter

class PagesController < ApplicationController

  around_filter :custom_handle_exception

  def show
    # ...
  end

  private

  def custom_handle_exception
    yield
  rescue StandardError => e
    handle_the_error(e)
    raise e
  end

end

您也可以使用rescue_from类方法执行类似操作。

您通常不应该拯救每个例外。但是,继承StandardError的例外情况应该可以挽救。

答案 1 :(得分:1)

您可以使用rescue_from

  class WhateverController < ApplicationController
      rescue_from Exception do |exception|
        # whatever handling here
      end

      # ...
    end