मैं मुख्य समारोह में ढेर पर कुछ वस्तुओं है स्थानीय वस्तुओं का विनाशकर्ता फोन:आवेदन समाप्त कर देंगे और
void Err(std::string msg)
{
SomehowLogErrorMessage(msg);
exit(1);
}
:
int main(...)
{
CFoo foo;
CBar bar;
}
इसके अलावा, मैं एक समारोह, कि अपने आवेदन में त्रुटियों का ट्रैक रखता है
त्रुटि कार्य निश्चित रूप से उपयोगी होता है जब मुझे घातक त्रुटि की रिपोर्ट करना पड़ता है। मैं सिर्फ त्रुटि लॉग करता हूं और एप्लिकेशन को समाप्त करता हूं - यह ऐसी त्रुटियों के बाद पुनर्प्राप्त नहीं हो सकता है। हालांकि, "निकास()" के साथ समाप्त होने से foo और bar destructors - एक व्यवहार नहीं है, जिसे मैं वास्तव में उम्मीद करता था (लेकिन गलत था)। "abort()" या तो मदद नहीं करता है। इसके अलावा, मैं मुख्य() में उन्हें पकड़ने के लिए अपवाद का उपयोग नहीं कर सकता। क्या एरर फ़ंक्शन को लागू करने का कोई अन्य तरीका है, ताकि यह ऐप को समाप्त कर दे और स्टैक ऑब्जेक्ट को सही तरीके से साफ़ कर सके? या क्या मुझे किसी भी तरह से मेरी त्रुटि हैंडलिंग को फिर से डिजाइन करना चाहिए?
धन्यवाद!
पेज। वैसे, क्या मैं अपनी मुख्य विंडो में WM_QUIT संदेश नहीं भेज सकता? मैं WinAPI के साथ अच्छा नहीं हूं, लेकिन मेरा ऐप शुद्ध Win32 है और मेरा एरर() फ़ंक्शन मेरी मुख्य विंडो में हैंडल प्राप्त कर सकता है। क्या ये काम करेगा?
स्पष्ट, बेवकूफ सवाल, लेकिन आप अपवादों का उपयोग क्यों नहीं कर सकते? – forsvarir
यदि आप कोई अपवाद नहीं फेंक सकते हैं (क्यों नहीं?) दूसरा विकल्प एक त्रुटि कोड वापस करना है, और उसके बाद मुख्य के अंत तक सभी तरह से प्रसारित करना है। –
मान लें, प्लेटफ़ॉर्म-विशिष्ट प्रतिबंध। परियोजना को ध्वज-अपवाद ध्वज के साथ संकलित किया गया है। – SadSido