Ruby:提升自定义命名空间异常以错误结束

时间:2014-05-19 13:18:56

标签: ruby class exception namespaces

以下代码:

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

如何从同一命名空间中引发自定义命名空间异常?

2 个答案:

答案 0 :(得分:3)

你忘记了一个逗号:

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

没有逗号,代码转换为:

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

因此解释器会搜索名为BaseException ...

的方法

答案 1 :(得分:1)

我想它应该是

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