【问题标题】:Ruby: Raising custom namespaced exception ends with an errorRuby:引发自定义命名空间异常以错误结束
【发布时间】:2014-07-07 11:29:08
【问题描述】:

以下代码:

module MyServerAPI
  class BaseException < Exception
  end

  class Base
    protected
    def self.msa_get(url)
      #................
      raise BaseException "HTTP request error: #{ex.message}\n"
      #................
    end
  end

  class Function < Base
    def self.list
      #................
      res = msa_get('functions')
      #................
      res
    end
  end
end

result = MyServerAPI::Function.list

执行错误:

undefined method `BaseException' for MyServerAPI::Function:Class

如何在同一个命名空间中引发我的自定义命名空间异常?

【问题讨论】:

    标签: ruby class exception namespaces


    【解决方案1】:

    你忘了一个逗号:

    raise BaseException, "HTTP request error: #{ex.message}\n"
    

    没有逗号,代码转换为:

    raise(BaseException("HTTP request error: #{ex.message}\n"))
    

    因此解释器会搜索一个名为BaseException...的方法。

    【讨论】:

      【解决方案2】:

      我想应该是这样

       raise BaseException.new("HTTP request error: #{ex.message}\n")
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多