2008-08-27 12 views
196

क्या कोई लाइन फ़ंक्शन कॉल है जो प्रोग्राम छोड़ती है और एक संदेश प्रदर्शित करती है? मैं जानता हूँ कि पर्ल में यह रूप में सरल है:बाहर निकलने का संदेश कैसे बनाएं

die("Message goes here") 

मैं इस टाइप के थक गया हूँ:

puts "Message goes here" 
exit 
+9

एक छोटी सी टिप्पणी, आपका 'रखता है' stdout को लिखता है, जबकि 'die' stderr को लिखता है, इसलिए:' $ stderr.puts "संदेश यहां जाता है" '। – cdarke

+0

मुझे पता है कि यह कोई जवाब नहीं था, लेकिन उसने मेरे प्रश्न का उत्तर दिया, धन्यवाद – Patrick

+0

बस संदर्भ के लिए, पायथन में यह 'sys.exit (" संदेश stderr पर जाता है ")'। –

उत्तर

340

abort फ़ंक्शन यह करता है।

abort("Message goes here") 

नोट: उदाहरण के लिए: abort संदेश STDERR को लिखा जाएगा के रूप में करने का विरोध किया putsSTDOUT को लिखेंगे जो।

+6

वाह! अच्छा लगता है! बहुत बुरा उन्होंने इस कार्यक्षमता के साथ बाहर निकलने के लिए अधिभार नहीं किया .... –

+48

नोट, प्रोग्राम को झूठ की स्थिति से बाहर निकलता है जो विफलता का प्रतिनिधित्व करता है। वास्तविक प्रतिनिधित्व सफलता की स्थिति के साथ डिफ़ॉल्ट निकास से बाहर निकलें। सुनिश्चित करें कि आप स्थिति के लिए सही का उपयोग करें। –

+1

फिर से। माइक स्टोन की टिप्पणी, कभी-कभी ऐसा लगता है कि रूबी उन लोगों की एक टीम द्वारा लिखी गई थी, जिनके साथ एक दूसरे के साथ कोई संचार नहीं था, है ना? (फिर भी, इसमें प्रोग्राम करना इतना आसान है।) – JellicleCat

2

मैं इस तरह के एक समारोह कभी नहीं सुना है, लेकिन यह पर्याप्त तुच्छ लागू करने के लिए किया जाएगा। ..

def die(msg) 
    puts msg 
    exit 
end 

तो फिर, अगर यह कुछ .rb फ़ाइल है कि आप अपने सभी लिपियों में शामिल में परिभाषित किया गया है, तो आप सुनहरा कर रहे हैं .... सिर्फ इसलिए कि इसे बनाया में मतलब यह नहीं है कि आप ऐसा नहीं कर सकते नहीं कर रहा है यह स्वयं ;-)

+3

'abort' फ़ंक्शन को चालू करता है (नीचे मेरा उत्तर देखें) –

+1

जब abort फ़ंक्शन आपके लिए करता है तो कोड क्यों लिखें? –

+0

@ChrisBunch यह ** ** ** निरस्त कार्य के समान नहीं है: 'निकास' डिफ़ॉल्ट रूप से लौटने के लिए डिफ़ॉल्ट रूप से लौट रहा है। 'abort' एक विफलता देता है। 'बाहर निकलें 1' भी विफलता लौटाएगा। – TemporalWolf

23

आप अपने कोड में एक वास्तविक त्रुटि निरूपित करने के लिए चाहते हैं, आप एक RuntimeError अपवाद बढ़ा सकता है:

raise RuntimeError, 'Message goes here' 

यह एक स्टैकट्रेस प्रिंट होगा, अपवाद के प्रकार उठाया और संदेश है कि आप प्रदान की जा रही। आपके उपयोगकर्ताओं के आधार पर, एक स्टैकट्रैक बहुत डरावना हो सकता है, और शोर में वास्तविक संदेश खो सकता है। दूसरी तरफ, यदि आप वास्तविक त्रुटि के कारण मर जाते हैं, तो एक स्टैकट्रैक आपको डिबगिंग के लिए अतिरिक्त जानकारी देगा।

+23

आपको एक को बढ़ाने के लिए RuntimeError का उल्लेख करने की आवश्यकता नहीं है (यह डिफ़ॉल्ट प्रकार का अपवाद उठाया गया है) इसलिए निम्न कोड पर्याप्त होगा: 'संदेश यहां जाता है' – sunaku

+0

सनकु - जबकि आपकी टिप्पणी पूरी तरह मान्य है, मुझे अक्सर पता चला कि अधिक स्पष्ट होने के कारण, विशेष रूप से अन्य लोगों के लिए कोड कोड पढ़ने के लिए उपयोगी हो सकता है। – shevy

2

मैं प्रोग्राम समाप्त होने पर कुछ कोड निष्पादित करने का एक तरीका खोज रहा हूं।
Found this:

Kernel.at_exit { puts "sayonara" } 
# do whatever 
# [...] 
# call #exit or #abort or just let the program end 
# calling #exit! will skip the call 

कहा जाता है कई बार कई संचालकों रजिस्टर करेंगे।

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