2012-07-31 33 views
5

संभव डुप्लिकेट:
How to print message from caught exception?एक फेंक दिया अपवाद में पाठ कहां जाता है?

क्षमा याचना करता है, तो इस बुनियादी या दोहराया गया है - मैं कई खोजें पहले किया था लेकिन कुछ भी है कि इस जवाब नहीं मिला।

अगर मैं कुछ बुनियादी तरह कार्य करें:

throw exception("This thing didn't work"); 

मुझे लगता है कि कहां दिखाई देगी? स्ट्रिंग आउटपुट कंसोल, स्टैक ट्रेस, या प्रोजेक्ट से जुड़े किसी भी .log फाइलों में दिखाई नहीं देती है। मुझे आश्चर्य होता है कि अगर मैं कहीं भी नहीं देखा जा सकता तो मैं वहां एक स्ट्रिंग भी डाल रहा हूं। मैं निश्चित रूप से स्टैक ट्रेस का उपयोग यह देखने के लिए कर सकता हूं कि यह कहां उड़ाया गया है, लेकिन उस तरह के अपवाद को पहले स्थान पर अपनाने के उद्देश्य से हराया जाता है।

जावा में, जब मैं इसे एक स्ट्रिंग देता हूं, तो मुझे उस आउटपुट में कहीं भी स्ट्रिंग दिखाई देगी। मुझे आश्चर्य है कि सी ++ में इस व्यवहार को पुन: उत्पन्न करना संभव है या नहीं।

+1

मुझे लगता है कि अपवाद पकड़ा जाने पर यह देखा जा सकता है। इसके अलावा, शायद दुर्घटना डंप? – nhahtdh

+1

आप * अपवाद को पकड़ रहे हैं, है ना? –

+2

तकनीकी रूप से यह मान्य नहीं है। आप एमएस लाइब्रै में एक बग का उपयोग कर रहे हैं (std :: अपवाद में कोई कन्स्ट्रक्टर नहीं है जो स्ट्रिंग लेता है)। लेकिन यदि आप 'std :: runtime_error में बदल जाते हैं (" यह बात काम नहीं करती है ") तो आपका बिंदु मान्य है। –

उत्तर

1

स्ट्रिंग को देखने के लिए आपको अपवाद को पकड़ना होगा। यह इस प्रकार के रूप में अंतिम उपाय के अपवाद संचालक के लिए उपयोगी हो सकता है:

int main(int argc, char **argv) 
{ 
    try { 
     ... 
    } 
    catch(const std::exception& e) { 
     std::cout << "Uncaught exception: " << e.what() << std::endl; 
    } 
} 

एक जीयूआई आवेदन आप मुख्य घटना पाश में एक पकड़ने बयान हो सकता है, और संदेश बॉक्स में त्रुटि संदेश प्रदर्शित ।

किसी ईवेंट-संचालित गैर-जीयूआई एप्लिकेशन में आप मुख्य ईवेंट लूप में कैच स्टेटमेंट भी प्राप्त कर सकते हैं, और लॉग फ़ाइल में त्रुटि संदेश लिख सकते हैं।

ये विधियां सुनिश्चित करेंगी कि आप सभी अपवाद देखेंगे। बेशक, अंतिम उपाय के अपवाद हैंडलर तक पहुंचने से पहले, अधिकांश अपवादों को पकड़ा जाना चाहिए।

+0

शायद यह है। समस्या यह है कि कुछ दुर्घटनाएं लाइब्रेरीज़ में आवेषण के कारण होती हैं, और ऐसा लगता है कि उनको पकड़ने का कोई तरीका नहीं है, इसलिए आखिरी रिसॉर्ट प्रयास/पकड़ भी सब कुछ नहीं पकड़ता है ... –

संबंधित मुद्दे