आपको यहां अपवाद का उपयोग नहीं करना चाहिए। यह स्पष्ट रूप से एक असाधारण मामला नहीं है यदि आपको हर जगह इसकी उम्मीद करने की आवश्यकता है तो आप इस समारोह का उपयोग करें!
एक बेहतर समाधान यह होगा कि फ़ंक्शन को इस तरह का कुछ उदाहरण वापस करने के लिए प्राप्त किया जाए। डिबग बिल्ड में (डेवलपर्स मानते हैं कि वे कोड पथ जो उन्होंने अभी लिखा है), वे एक जोरदार बात करेंगे अगर वे यह जांचना भूल जाते हैं कि ऑपरेशन उत्तराधिकारी है या नहीं।
class SearchResult
{
private:
ResultType result_;
bool succeeded_;
bool succeessChecked_;
public:
SearchResult(Result& result, bool succeeded)
: result_(result)
, succeeded_(succeeded)
, successChecked_(false)
{
}
~SearchResult()
{
ASSERT(successChecked_);
}
ResultType& Result() { return result_; }
bool Succeeded() { successChecked_ = true; return succeeded_; }
}