मुझे आश्चर्य है कि दस्तावेज़ीकरण का सही तरीका क्या है, डॉक्सिजन में, निम्नलिखित है।

कुछ सत्यापनकर्ताओं को परिभाषित करने वाला वर्ग होना जैसे:

class Validators {
    /**
    * @fn A
    * @brief sees if x is too large.
    * @param[in] x the input to validate
    * @throws runtime_error when otx is too large.
    */
    static void A(int x) {
        if (x > 5) {
            throw std::runtime_error("x too large");
        }
    }
};

एक समारोह में इस valdator का उपयोग करना जैसे:

#include "validator.h"

class MyClass {
public:
    void setX(int x) {
        Validators::A(x);
    }
};

मुझे यह दस्तावेज़ कैसे करना चाहिए कि setX(), A() द्वारा फेंके गए रनटाइम_एरर को फिर से फेंकता है, या क्या मुझे इसका दस्तावेज़ीकरण नहीं करना चाहिए?

4
Ruud Verhoef 2 पद 2019, 14:57
शायद \copydoc/\copybrief/\copydetails का उपयोग करें। ध्यान दें कि \fn A जरूरी नहीं है क्योंकि दस्तावेज सीधे फंक्शन ए के सामने है।
 – 
albert
2 पद 2019, 15:03

2 जवाब

इसे बड़े करीने से करने के लिए मुझे अपना कोड थोड़ा बदलना पड़ा:

#include "validator.h"
class MyClass {
public:
    void setX(int x) {
        try {
            Validators::A(x);
        }
        catch (std::runtime_error & e) {
            throw e
        }
    }
};

ऐसा करने से यह फिर से समझ में आता है कि @throws को Doxygen s में जोड़ना अब स्पष्ट रूप से फिर से फेंक दिया गया है।

0
Ruud Verhoef 2 पद 2019, 16:45
1
संभावित स्लाइसिंग से बचने के लिए केवल throw e; के बजाय throw; का उपयोग करें।
 – 
Jarod42
2 पद 2019, 16:57
केवल पकड़ें और फिर से फेंकें नहीं, आपने 5x अधिक पंक्तियाँ जोड़ी हैं जो कुछ भी नहीं कहती हैं।
 – 
Caleth
2 पद 2019, 18:32
जब एकाधिक त्रुटि को सभी प्रकार के रनटाइम_एरर (इससे विरासत में प्राप्त कस्टम त्रुटि वर्ग) फेंका जा सकता है। क्या आपको अब भी लगता है कि अतिरिक्त लाइनें बहुत अधिक हैं? मुझे जावा में यह सुनिश्चित करने के लिए सोचा गया था कि अन्य लोग यह देख सकें कि कोड क्या करता है। उस स्थिति में कुछ अतिरिक्त पंक्तियां कोई समस्या नहीं हैं यदि यह पठनीयता में सुधार करती है। मैं यह नहीं जान पाऊंगा कि फ़ंक्शन रनटाइम_एरर्स को अन्यथा फेंक सकता है (दस्तावेज़ों को छोड़कर)।
 – 
Ruud Verhoef
3 पद 2019, 09:54
1
टुकड़े टुकड़े करके आपका वास्तव में क्या मतलब है?
 – 
Ruud Verhoef
3 पद 2019, 09:55
आपको बुरी तरह सिखाया गया था। आप जानते हैं कि यह फेंक सकता है क्योंकि यह कोई अपवाद नहीं है
 – 
Caleth
3 पद 2019, 11:17

आपको यह दस्तावेज करना चाहिए कि कॉलर के लिए इसका क्या अर्थ है। उदा.

class MyClass {
public:
    /**
    * @brief sets X
    * @param[in] x the new X
    * @throws runtime_error when x is invalid.
    */
    void setX(int x) {
        Validators::A(x);
    }
};
0
Caleth 2 पद 2019, 18:30