2014-04-22 72 views
3

我有一个自定义异常类为:NoMethodError在Ruby中::自定义异常类

module ABC 
    class XYZ < Exception 

    end 
end 

我尝试打电话给我的异常类,在其他一些类如::

raise ABC::XYZ "My Msg" if something != onething 

我得到的以下例外:

NoMethodError: undefined method `XYZ' for ABC:Module 

有人可以帮我这个。

谢谢。

回答

2

你只是缺少一个逗号,该行应为:

raise ABC::XYZ, "My Msg" if something != onething 

目前它被解析为一个方法调用XYZ"My Msg"作为参数,给出了错误,因为没有XYZ方法。

1

你需要筹集你拥有了它,Ruby解释器假设你正试图执行的方法ABC::XYZ

一个实例。

raise ABC::XYZ.new("My Msg") if something != onething 
0

你可以服用点是这样的:

if something != onething 
    raise ABC::XYZ, "My Msg" 
end 

未经测试: 或者你可以做到这一点我想:

raise ABC::XYZ, "My Msg" if something != onething 

希望它能帮助!