2009-07-07 10 views
5

मैं एक कस्टम मॉड्यूल (जो वर्तमान में केवल एक नया अपवाद वर्ग को परिभाषित करता है) बना लिया है, और lib/lib_th.rbरेल में एक मॉड्यूल में कस्टम अपवाद को परिभाषित करना

module LibTH 
    module Error 
     IDNotFound = Class.new 
    end 
end 

के अंतर्गत रखें मैं की आवश्यकता की जरूरत नहीं होनी चाहिए/शामिल मेरे कोड में मॉड्यूल, क्योंकि इसे स्वचालित रूप से लोड किया जाना चाहिए, क्योंकि यह परंपरागत नामकरण नियमों का पालन करता है।

लेकिन जब मैं कोशिश करते हैं और मेरी कोड में कहीं IDNotFound अपवाद बढ़ा:

res.size == 0 ? raise LibTH::Error::IDNotFound : res 

मैं follwoing त्रुटि मिलती है: कि मैं नहीं बढ़ाने के लिए कोशिश कर समस्याओं का सामना

SyntaxError (/Users/lrnz/code/ruby/corinna/app/models/treasure_hunt.rb:49: syntax error, unexpected tCONSTANT, expecting kDO or '{' or '(' 
    res.size == 0 ? raise LibTH::Error::IDNotFound : res 
          ^
/Users/lrnz/code/ruby/corinna/app/models/treasure_hunt.rb:49: syntax error, unexpected ':' 
    res.size == 0 ? raise LibTH::Error::IDNotFound : res 
                ^): 
app/controllers/treasure_hunts_controller.rb:50:in `show' 

अजीब बात है script/console में अपवाद:

>> raise LibTH::Error::IDNotFound 
LibTH::Error::IDNotFound: LibTH::Error::IDNotFound 
from (irb):70 

था nks!

उत्तर

2

कोई बात नहीं, मैं समस्या अपने आप हल:

if ? then : else कथन का उपयोग करने के बजाय, मैं इसे एक में विस्तार किया:

raise LibTH::Error::IDNotFound if res.size == 0 
res 

ऐसा लगता है आप एक निरंतर मूल्य (एक वर्ग के रूप में उपयोग नहीं कर सकते नाम) सी-तरह if बयान में, इस प्रकार:

syntax error, unexpected tCONSTANT, expecting kDO or '{' or '(' 

धन्यवाद asy!

2

निरंतर कोई समस्या नहीं है, आपके पास अभी raise के साथ एक वाक्यविन्यास त्रुटि है। यदि आपने इसे बदल दिया है:

res.size == 0 ? (raise LibTH::Error::IDNotFound) : res 

यह काम करेगा। वैसे भी जिस फ़ॉर्म को आपने सही किया है, वैसे भी बेहतर है।

संबंधित मुद्दे