2014-04-22 101 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 

希望它能幫助!