在封闭类中实例化内部类 - Ruby

时间:2014-11-05 00:17:00

标签: ruby exception

我试图在Ruby的外部类中创建一个内部类的实例,方法如下,

myclass.rb

require 'mylibs'

class myClass
    class ClientNotInitializedError < StandardError
    end

    def myMethod
        if not @client raise ClientNotInitializedError.new
        #do stuff
    end
end

然而,在我试图抛出异常的构建中失败了。我究竟做错了什么? 我尝试了self.ClientNotInitializedError.newself::ClientNotInitializedError.new之类的东西,但仍然没有运气。

ClientNotInitializedError非常特定于此类,因此我希望将其保留在类中或至少保存在同一个文件中。

1 个答案:

答案 0 :(得分:1)

我试图运行你的代码并犯了几个错误:

a)类名必须始终以大写字母开头(否则您将收到错误:类/模块名称必须为CONSTANT(SyntaxError))

b)你的if语句中没有关闭结束块,你提出错误。这应该有效:

class MyClass
  class ClientNotInitializedError < StandardError; end

  def my_method
    raise ClientNotInitializedError.new unless @client
    #do stuff
  end
end

MyClass.new.my_method #=> will raise the appropriate error

我建议您熟悉Ruby's naming conventions.