首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails:将Mongoid和BSON异常恢复为我自己的异常

Rails:将Mongoid和BSON异常恢复为我自己的异常
EN

Stack Overflow用户
提问于 2011-05-27 22:19:02
回答 1查看 473关注 0票数 4

我有自己的异常处理程序:

代码语言:javascript
复制
module Frog
  module Errors
    class NotFound < FrogError
      attr_accessor :exception

      def initialize (exception)
        self.exception = exception
      end

      def as_json
        {
          :error => {
            :message => "Object not found"
          }
        }
      end 

      def status_code
        404
      end
    end
  end
end

在application_controller.rb中,此异常由

代码语言:javascript
复制
rescue_from Frog::Errors::FrogError, :with => :render_frog_error

代码语言:javascript
复制
def render_frog_error(exception)
   access_control_headers!
   render :json => exception, :status => exception.status_code
end

在我的项目中,我有BSON::InvalidObjectId和Mongoid::Errors::DocumentNotFound异常。我想自己生成这个异常。我试着这样做:

代码语言:javascript
复制
rescue_from BSON::InvalidObjectId do 
   |ex| raise Frog::Errors::NotFound.new(ex) 
end

但它不起作用。我如何才能将BSON和Mongoid的异常重新设置为我的异常?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-06-06 18:16:08

我找到了这个解决方案:

代码语言:javascript
复制
rescue_from BSON::InvalidObjectId, :with => :proxy_exception
rescue_from Mongoid::Errors::DocumentNotFound, :with => :proxy_exception

def proxy_exception(exception)
        exception = Frog::Errors::NotFound.new(exception)
        render_frog_error(exception) 
end
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6153563

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档