在我的rails应用程序中,我使用ActiveResource来访问另一个服务,我想优雅地处理当该资源脱机时发生的异常(服务器关闭/ ip被阻止等)。如果没有返回任何响应,我的应用会生成此错误:
Errno::ECONNREFUSED in UsersController
我想在我的应用程序控制器中执行'rescue_from',这样它就会在错误发生时处理错误,但不确定params会是什么,或者这种异常在这一点上甚至是可以捕获的
我应该/可以测试资源的可用性吗?
我可以这样做,但它会捕获每个错误,并且我想捕获我得到的特定连接类型错误。
rescue_from Exception, do
...
end
答案 0 :(得分:1)
假设一切正常可能更容易,然后在出现异常时处理异常。您可以在应用程序控制器中使用rescue_from(或者可能是您的用户控制器,如果它是本地错误):
class ApplicationController < ActionController::Base
rescue_from(Errno::ECONNREFUSED) do |e|
flash[:warning] = 'Hey! Bad things happened!'
render :template => 'my/error/page'
end
end
注意:我在更新您的帖子之前就开始了这个,但好消息是Errno::ECONNREFUSED
是一个类 - 而不是常量 - 所以您可以使用它而不是泛型{ {1}}:
Exception
希望有所帮助!