0

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

4

2 回答 2

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应该可以很好地挽救。

于 2013-02-02T00:42:00.227 回答
1

您可以使用rescue_from

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

      # ...
    end
于 2013-02-02T00:49:37.197 回答