मैं सोच रहा था कि सी ++ मानक पुस्तकालय में परिभाषित अपवादों को फेंकने के लिए ठीक है या नहीं, बल्कि अपनी कक्षा बनाने के बजाय। हम की तरह कुछ कर सकता है, बेशकक्या सी ++ मानक पुस्तकालय में परिभाषित अपवाद फेंकना ठीक है?
#include <stdexcept>
#include <iostream>
#include <string>
bool useless_function(const std::string& str) {
if (str == "true")
return true;
else if (str == "false")
return false;
else
throw std::invalid_argument("Expected argument of either true or false");
}
और उसके बाद: उदाहरण के लिए, निम्नलिखित (बेवकूफ) समारोह है कि एक तर्क के रूप में एक स्ट्रिंग लेता है पर विचार करते हैं
int main(int argc, const char** argv) {
try {
const bool check = useless_function("not true");
}
catch (std::invalid_argument& error) {
std::cerr << error.what() << '\n';
}
return 0;
}
मैं here पढ़ा है कि std::stoi
फंक्शंस का परिवार std::invalid_exception
अपवाद फेंक देता है जब उन्हें एक अवैध तर्क मिलता है; यही वह जगह है जहां से उपर्युक्त विचार आया था।
आपके लिए उपयोग किए जाने के लिए तैयार किए गए अपवाद वर्गों के साथ एक संपूर्ण शीर्षलेख, '' है, ताकि आप अपने स्वयं के पहियों का आविष्कार न करें। –