यहां स्थिति है। मैं कोड के माध्यम से बुलबुला करने के लिए doStuff() में सभी अपवाद चाहता हूं ताकि उन्हें उच्च स्तर पर संभाला जा सके।रूबी रीराइजिंग अपवाद w/अतिरिक्त स्ट्रिंग तर्क
मैं भी रिकॉर्ड करने के लिए कितनी बार किसी भी अपवाद() एक उच्च स्तर पर doStuff में क्या हो रहा है, वे भी चाहते हैं, और वर्तमान में यह कर रहा हूं:
begin
doStuff()
rescue Exception =>
raise e, "specific error to log in a db"
doStuff कोड अपवाद के दर्जनों फेंक, और मैं इन घटनाओं में से प्रत्येक को डीबी में डालने के लिए कैप्चर करना चाहता हूं। एक doStuff2() है, जो समान निर्देशों को भी फेंक सकता है, और मैं जानना चाहता हूं कि वे किस समारोह से आए थे।
अतिरिक्त स्ट्रिंग जोड़ना, अपवाद को बदलना प्रतीत होता है, और मैं मूल अपवाद के बारे में सभी अच्छी स्वरूपण और ट्रेस जानकारी खो देता हूं।
कोई भी सुझाव मैं मूल अपवाद को कैसे पुनः प्राप्त कर सकता हूं, लेकिन doStuff() के भीतर होने वाले सभी अपवादों का भी ट्रैक रखता हूं?
doStuff (बढ़ाने के लिए कोई नया अपवाद निर्माण खेद सिर्फ छद्म कोड था, कर सकते हैं। समस्या यह है कि मैं यहां अपवाद लॉग नहीं कर सकता। लॉगिंग एक उच्च स्तर पर होना है। यह ऐप 'गूंगा' है और डेटाबेस या लॉगिंग के बारे में कुछ भी नहीं जानता है। मुझे पता है कि मैं एक साथ 2 अपवाद नहीं बढ़ा सकता, लेकिन इससे मेरी समस्या हल हो जाएगी। उनमें से एक पकड़ा और लॉग हो जाएगा, और दूसरा अभी भी कोड में बुलबुला होगा। –