在浏览器中抑制异常

时间:2009-10-27 17:59:15

标签: ruby-on-rails ruby

我必须调试一些与db相关的错误,并在db导致错误时持续监视日志。由于错误已经记录,我希望有例外:

的ActiveRecord :: StatementInvalid

被禁止,以便用户不会看到“出错页面”。错误仅限于应用程序的一小部分,我们希望在修复后删除此抑制。

感谢!!!

3 个答案:

答案 0 :(得分:3)

您可以在ApplicationController中添加rescue_from行,以便在任何控制器中抛出该特定异常时捕获该异常。然后你必须决定在那种情况下会发生什么(例如重定向到起始页面)。

答案 1 :(得分:1)

假设您在控制器的“创建”操作中遇到问题,您可以执行以下操作:

def create
  @record.create(params[:record])
rescue ActiveRecord::StatementInvalid
  flash[:notice] = "There was a problem, but we know about it."
  redirect_to root_path
end

答案 2 :(得分:0)

您可以在开始救援结束块中包装失败的代码。

begin 
  # stuff that gets executed
  ...
  # DangerousStatement
  ...
  # stuff that doesn't get executed if dangerous statement raises an error
  ...
rescue
  # set variables that are needed by other code and would have been set if dangerous statement succeeded
  ...
end

然而,这确实是你应该在开发模式下调试的。