क्या मैं at_exit ब्लॉक में सेल्व प्रक्रिया से बाहर निकलने की स्थिति निर्धारित कर सकता हूं?ruby at_exit निकास स्थिति
at_exit do
if this_process_status.success?
print 'Success'
else
print 'Failure'
end
end
क्या मैं at_exit ब्लॉक में सेल्व प्रक्रिया से बाहर निकलने की स्थिति निर्धारित कर सकता हूं?ruby at_exit निकास स्थिति
at_exit do
if this_process_status.success?
print 'Success'
else
print 'Failure'
end
end
विचार का उपयोग कर tadman से
at_exit do
if $!.nil? || $!.is_a?(SystemExit) && $!.success?
print 'success'
else
code = $!.is_a?(SystemExit) ? $!.status : 1
print "failure with code #{code}"
end
end
हालांकि इस पर दस्तावेज़ वास्तव में पतला है, $! जो होता है वह अंतिम अपवाद होता है, और बाहर निकलने के बाद() कॉल यह सिस्टमएक्सिट अपवाद है। लाना उन दोनों एक साथ आप इस मिल:
at_exit do
if ($!.success?)
print 'Success'
else
print 'Failure'
end
end
मामले को केवल तभी बाहर निकलने के लिए कहा जाएगा हो जाएगा कि। निश्चित रूप से मैं परीक्षण कर सकता हूं अगर $! शून्य है या SystemExit है जो सफलता पर सच है? लेकिन क्या प्रक्रिया :: स्थिति ऑब्जेक्ट प्राप्त करना संभव है या यह शीर्ष प्रक्रिया के लिए नहीं बनाया गया है? – tig
आपके विचार का उपयोग करके मुझे जवाब मिला और पोस्ट किया गया लेकिन मुझे नहीं पता कि कौन सा जवाब चिह्नित करना बेहतर है - आपका या मेरा? – tig
जो भी आपके लिए काम करता है। पता नहीं था कि आप अपने सवाल का जवाब दे सकते हैं, लेकिन ठीक है। – tadman
सिर्फ मेरी राय है कि आप खुद को/शग के बजाय टैडमैन को "चेक" दें। –
मुझे लगता है कि पूरा जवाब जांचना चाहिए। चेक अन्य उपयोगकर्ताओं के लिए उत्तर की तलाश में सबसे उपयोगी है और मुझे नहीं लगता कि मेरे लिए और कुछ भी बदलेगा, जो भी जवाब मैं जांचूंगा। – tig
मुझे लगता है कि इसके लिए 'at_exit' का उपयोग करना छोटी स्क्रिप्ट के लिए ठीक है। बड़े ऐप्स के लिए, आपको इच्छित निकास बिंदुओं पर 'निकास' (या निकास को संभालने के लिए अपनी विधि को कॉल करना) का उपयोग करना चाहिए, और त्रुटियों, अपवादों और सिग्नल को स्पष्ट रूप से संभालना चाहिए। – Kelvin