2009-10-16 10 views
12

असल में, मैं अपवादों का उपयोग करने के प्रमुख पेशेवरों और विपक्ष को समझता हूं। और मैं उन्हें डिफ़ॉल्ट रूप से त्रुटि-संचालन रणनीति के रूप में अपनी परियोजनाओं में उपयोग करता हूं। लेकिन अब मैं क्यूटी लाइब्रेरी के साथ एक विंडोज सीई प्रोजेक्ट शुरू कर रहा हूं, और मुझे लगता है कि क्यूटी रचनाकारों ने कक्षा पदानुक्रम में अपवादों का उपयोग करने से इंकार कर दिया।क्यूटी और त्रुटि प्रबंधन रणनीति

इसलिए, यदि मैं अपवादों का उपयोग करता हूं तो मुझे अपने/क्यूटी कोड सीमाओं पर त्रुटि कोड (या कुछ ऑब्जेक्ट्स, या बस निगल) से सावधानी से अनुवाद करने की आवश्यकता होगी। अन्यथा, मैं अपने कोड में अपवादों का उपयोग करने से इनकार कर सकता हूं और किसी अन्य रणनीति पर स्विच कर सकता हूं।

अपवादों का उपयोग करने या त्रुटि कोड, या आदि का उपयोग करने के लिए मेरे मामले में सबसे अच्छी त्रुटि प्रबंधन रणनीति क्या होगी ...? क्या आपके पास क्यूटी विकास के साथ अनुभव है और आपने किस त्रुटि प्रबंधन रणनीति का उपयोग किया था?

उत्तर

0

किसी ईवेंट हैंडलर से अपवाद फेंकना Qt में समर्थित नहीं है। इससे बचें, और अपवादों के साथ कोई समस्या नहीं होनी चाहिए।

+0

क्या चीज कहता है कि यह वास्तव में समर्थित है? –

+0

नहीं, समर्थित नहीं है। बस आप उन्हें अपने जोखिम पर उपयोग कर सकते हैं। – cheez

7

QApplication ओवरराइड :: सूचित करें() और वहां अपवादों को संभालें (वापसी मूल्य पर 100% नहीं)। आप सिग्नल हैंडलर से अपवादों को "फेंक सकते हैं" लेकिन वे इस तरह क्यूटी को प्रचारित नहीं करते हैं।

bool 
notify(QObject * rec, QEvent * ev) 
{ 
    try 
    { 
    return QApplication::notify(rec,ev); 
    } 
    catch(my::Exception & e) 
    { 
    QMessageBox::warning(0, 
         tr("An error occurred"), 
         e.message()); 
    } 
    catch(...) 
    { 
    QMessageBox::warning(0, 
         tr("An unexpected error occurred"), 
         tr("This is likely a bug.")); 
    } 
    return false; 
+0

तो, यह विधि हमें ईवेंट हैंडलर से अपवाद फेंकने की अनुमति देगी। लेकिन स्लॉट्स के बारे में क्या (सीधा कनेक्शन और कतारबद्ध कनेक्शन के साथ)? –

+0

आपको परीक्षण करना होगा ... – cheez

+0

क्यूटी 4.0 के बाद से हम यही कर रहे हैं, अच्छी तरह से काम करता है! – Ringding

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