मैं वर्तमान में अपने ओएसएस आवेदन में अपवाद और अपवाद हैंडलिंग जोड़ने पर काम कर रहा हूं। अपवाद शुरुआत से सामान्य विचार रहे हैं, लेकिन मैं एक अच्छा अपवाद ढांचा ढूंढना चाहता था और सभी ईमानदारी से, सी ++ अपवाद हैंडलिंग सम्मेलनों और मुहावरों को उनका उपयोग शुरू करने से पहले थोड़ा बेहतर समझना चाहता था। मुझे सी #/नेट, पायथन और अन्य भाषाओं के साथ बहुत अनुभव है जो अपवादों का उपयोग करते हैं। मैं इस विचार के लिए अजनबी नहीं हूं (लेकिन एक मास्टर से बहुत दूर)।उपयोगकर्ताओं को अपवाद डीबग जानकारी प्रदर्शित करना
सी # और पायथन में, जब एक अनचाहे अपवाद होता है, तो उपयोगकर्ता को एक अच्छा स्टैक ट्रेस मिलता है और आम तौर पर
बहुत उपयोगी
अनमोल डिबगिंग जानकारी। यदि आप ओएसएस आवेदन पर काम कर रहे हैं, तो उपयोगकर्ताओं को उस जानकारी को समस्या रिपोर्ट में पेस्ट करना है ... अच्छी तरह से बस कहना है कि मुझे इसके बिना जीना मुश्किल लगता है। इस सी ++ प्रोजेक्ट के लिए, मुझे "एप्लिकेशन क्रैश हो गया", या अधिक सूचित उपयोगकर्ताओं से, "मैंने एक्स, वाई और जेड किया, और फिर यह क्रैश हो गया"। लेकिन मैं भी उस डिबगिंग जानकारी चाहता हूँ!
मैंने पहले से ही (और बड़ी कठिनाई के साथ) इस तथ्य के साथ अपनी शांति बना दी है कि मुझे सी ++ अपवाद स्टैक ट्रेस प्राप्त करने का क्रॉस-प्लेटफ़ॉर्म और क्रॉस-कंपाइलर तरीका कभी नहीं दिखाई देगा, लेकिन मुझे पता है कि मैं प्राप्त कर सकता हूं कार्य का नाम और अन्य प्रासंगिक जानकारी।
और अब मैं चाहता हूं कि मेरे अनचाहे अपवादों के लिए। मैं boost::exception का उपयोग कर रहा हूं, और उनके पास यह बहुत अच्छा diagnostic_information चीज़माजिग है जो कि (असम्बद्ध) फ़ंक्शन नाम, फ़ाइल, रेखा और सबसे महत्वपूर्ण रूप से अन्य अपवाद विशिष्ट जानकारी प्रोग्रामर को उस अपवाद में जोड़ा जा सकता है।
स्वाभाविक रूप से, जब भी मैं कर सकता हूं, मैं कोड के अंदर अपवादों को संभालेगा, लेकिन मैं यह सोचने के लिए मूर्ख नहीं हूं कि मैं एक जोड़े को (अनजाने में, निश्चित रूप से) छोड़ने नहीं दूँगा।
तो मैं अपने मुख्य प्रवेश बिंदु को try
ब्लॉक के अंदर catch
के साथ लपेटना चाहता हूं जो एक विशेष संवाद बनाता है जो उपयोगकर्ता को सूचित करता है कि एप्लिकेशन में कोई त्रुटि आई है, उपयोगकर्ता द्वारा क्लिक किए जाने पर अधिक विस्तृत जानकारी प्रस्तुत की जाती है "अधिक" या "डीबग जानकारी" या जो भी हो। इसमें डायग्नोस्टिक_इनॉर्मेशन से स्ट्रिंग होगी। इसके बाद मैं उपयोगकर्ताओं को इस जानकारी को समस्या रिपोर्ट में पेस्ट करने का निर्देश दे सकता था।
लेकिन एक नाराज आंत महसूस मुझे बता रहा है कि कोशिश ब्लॉक में सब कुछ लपेटना वास्तव में एक बुरा विचार है। क्या मैं बेवकूफ करने वाला हूँ? यदि यह है (और यदि यह नहीं है), जो मैं चाहता हूं उसे प्राप्त करने का एक बेहतर तरीका क्या है?
+1, लेकिन क्या यह 'std :: अपवाद 'अपवाद से प्राप्त कुछ को कॉल करने के लिए सही है? ;-) (और नहीं, मेरे पास फेंकने वाले int या कुछ समान रूप से तेज किनारे के लिए बेहतर नाम नहीं है)। –
आपका मतलब है 'पकड़ो (...) '? मेरे पास केवल पूर्णता के लिए है, अगर वास्तव में कुछ भी इसमें प्रवेश करता है तो मैं आश्चर्यचकित हूं और याद रखता हूं कि कौन यादृच्छिक सामान फेंक रहा है। – GManNickG
जीएमएन, हाँ, मैं आपका इरादा देखता हूं, यह सिर्फ इतना है कि मुझे आश्चर्य है कि अगर कोई इस मामले में "अज्ञात अपवाद" या "अज्ञात कुछ हमारे रास्ते को फेंक दिया" कहता है ;-) शब्दावली का मामला। –