आम तौर पर एक रन() कॉल के रूप में फैब्रिक छोड़ देता है, एक गैर-शून्य निकास कोड देता है। कुछ कॉल के लिए, हालांकि, यह उम्मीद की जाती है। उदाहरण के लिए, जब PNGOut फ़ाइल को संपीड़ित करने में असमर्थ होता है तो 2 का त्रुटि कोड देता है।क्या रिमोट शैल में चलाने के लिए फैब्रिक का उपयोग करते समय मैं त्रुटि कोड पकड़ सकता हूं?
वर्तमान में मैं केवल इस तर्क को खोल तर्क (do_something_that_fails || true
या do_something_that_fails || do_something_else
) का उपयोग करके रोक सकता हूं, लेकिन मैं अपने तर्क को सादे पायथन (जैसा कि कपड़ा वादा है) में रखने में सक्षम हूं।
क्या कोई त्रुटि कोड जांचने का कोई तरीका है और फैब्रिक आतंक होने और मरने के बजाय इसका प्रतिक्रिया है? मैं अभी भी अन्य कॉल के लिए डिफ़ॉल्ट व्यवहार चाहता हूं, इसलिए पर्यावरण को संशोधित करके अपने व्यवहार को बदलना एक अच्छा विकल्प नहीं लगता है (और जहां तक मुझे याद है, आप इसे केवल वैसे भी मरने के बजाए चेतावनी देने के लिए इसका उपयोग कर सकते हैं)।
इससे पहले कि कोई यह कोई डुप्लिकेट के निशान: [इस सवाल से संबंधित है] (http://stackoverflow.com/questions/3876936/how-to-continue-the-task-when- कपड़े-मिल-ए-एरर), लेकिन जैसा कि मैंने कहा, मैं त्रुटियों के लिए _react_ करना चाहता हूं, उन्हें अनदेखा नहीं करना चाहता हूं। –
वर्तमान में स्वीकृत उत्तर दिनांकित है। जुलाई 2013 से, एक पर्यावरण परिवर्तनीय रहा है जो आपको यह निर्दिष्ट करने की अनुमति देता है कि कोई त्रुटि उत्पन्न होने पर कौन सा अपवाद उठाया जाना चाहिए (डिफ़ॉल्ट एक 'SystemExit' है, जो अपवाद का वंशज नहीं है, यही कारण है कि यह आमतौर पर आपके प्रोग्राम को क्रैश करने का कारण बनता है)। मेरा उत्तर देखें: http://stackoverflow.com/a/25293275/901641 – ArtOfWarfare
//, मुझे उत्सुकता है कि कैसे Invoke इसे संभालेगा। –