我继承了一个项目,以前的开发人员将其添加到应用程序控制器中:
rescue_from Exception, :with => :render_500
我认为是抓住这个并呈现动态页面。静态页面是不可接受的,但我现在不确定为什么会这样。在任何情况下,这都会破坏我使用Exceptional捕获异常的能力。有没有办法在渲染动态错误页面后重新引发异常?
我试过了:
def rescue_from(exception)
respond_to |format|
format.html { #render the page# }
end
raise exception
end
然而,很明显,这不起作用。有什么想法吗?
答案 0 :(得分:6)
您可以手动发布到例外 - 而不是尝试重新加注并获得捕获和发布的例外。
def rescue_from(exception)
::Exceptional::Catcher.handle(exception)
respond_to |format|
format.html { #render the page# }
end
end
答案 1 :(得分:1)
你能否在开始或救援中提出异常并在确保中做出respond_to?
我在下面提供b),因为我不确定a)是否有效。显然你可以在b)示例中引发任何异常进入rescue块然后引发传入的异常。
要么:
a)
begin
raise exception
ensure
respond_to |format|
format.html { #render the page }
end
end
OR
b)
begin
raise exception
rescue Exception => e
raise e
ensure
respond_to |format|
format.html { #render the page }
end
end
答案 2 :(得分:0)
这样的事情应该有效 -
rescue_from Exception, :with => :render_500
def rescue_500(exception)
raise exception
end
查看docs,如果这不起作用,那么应该可以帮助您找到解决方案。