मैं रूबी सीख रहा हूं और failकीवर्ड का सामना कर रहा हूं । इसका क्या मतलब है?
if password.length < 8
fail "Password too short"
end
unless username
fail "No user name set"
end
मैं रूबी सीख रहा हूं और failकीवर्ड का सामना कर रहा हूं । इसका क्या मतलब है?
if password.length < 8
fail "Password too short"
end
unless username
fail "No user name set"
end
fail "Password too short" if password.length < 8औरfail "No user name set" unless username
जवाबों:
रूबी में, failपर्यायवाची है raise। failकीवर्ड की एक विधि है Kernelमॉड्यूल जो वर्ग द्वारा शामिल किया गया है Object। failविधि की तरह ही एक रनटाइम त्रुटि को जन्म देती raiseकीवर्ड।
failविधि तीन भार के होते हैं:
fail: RuntimeErrorएक त्रुटि संदेश के बिना उठाता है ।
fail(string): RuntimeErrorएक त्रुटि संदेश के रूप में स्ट्रिंग तर्क के साथ उठता है :
fail "Failed to open file"
fail(exception [, string [, array]]): exceptionवैकल्पिक त्रुटि संदेश (दूसरा तर्क) और कॉलबैक जानकारी (तीसरा तर्क) के साथ वर्ग (प्रथम तर्क) के अपवाद को उठाता है ।
उदाहरण: मान लें कि आप एक फ़ंक्शन को परिभाषित करते हैं जिसे खराब तर्क दिया जाना चाहिए। इसे उठाना बेहतर है ArgumentErrorऔर न कि RuntimeError:
fail ArgumentError, "Illegal String"
एक और उदाहरण: आप पूरे बैकट्रेस को failविधि में पास कर सकते हैं ताकि आप rescueब्लॉक के अंदर ट्रेस तक पहुंच सकें :
fail ArgumentError, "Illegal String", caller
callerएक कर्नेल विधि है, जो फॉर्म में स्ट्रिंग्स की एक सरणी के रूप में बैकट्रेस देता है file:line: in 'method'।
कोई तर्क के साथ, अपवाद $ में उठाता है! या यदि $ RuntimeError उठाता है! nil है। एक एकल स्ट्रिंग तर्क के साथ, एक संदेश के रूप में स्ट्रिंग के साथ एक रनटाइमएयर उठाता है। अन्यथा, पहला पैरामीटर अपवाद श्रेणी (या एक ऑब्जेक्ट जो अपवाद संदेश भेजे जाने पर अपवाद वस्तु लौटाता है) का नाम होना चाहिए। वैकल्पिक दूसरा पैरामीटर अपवाद से जुड़े संदेश को सेट करता है, और तीसरा पैरामीटर कॉलबैक जानकारी की एक सरणी है। अपवाद शुरू ... अंत ब्लॉकों के बचाव खंड द्वारा पकड़े जाते हैं।
स्रोत: कर्नेल मॉड्यूल पर रूबी प्रलेखन ।
raise
रूबोकॉप दोनों शब्दों के उपयोग के बारे में कहता है;
' सिग्नल अपवादों के
failबजाय उपयोग करेंraise।'' पुनर्विचार अपवादों के
raiseबजाय उपयोग करेंfail।'
यहाँ एक उदाहरण है।
def sample
fail 'something wrong' unless success?
rescue => e
logger.error e
raise
end
fail == raise
दूसरे शब्दों में, त्रुटि उठाने की विधि के failलिए सिर्फ एक लोकप्रिय उपनाम है raise। उपयोग:
fail ArgumentError, "Don't argue with me!"
www.ruby-doc.org आपका मित्र है। जब मैंने rubydoc fail" कर्नेल " को पहली बार हिट किया था। मेरी सलाह है, जब संदेह हो, तो इस तरह के निश्चित सामान के लिए निश्चित स्रोत पर जाएं।
raiseअपवादों को संभालने के लिए उपयोग करते हैं औरfailकब नहीं।