में कैच ब्लॉक के अंदर कुछ फेंकने का प्रयास करता हूं तो यह समाप्ति क्यों करता है मेरे पास निम्न C++ कोड है और यह मुझे आश्चर्यचकित करता है। समस्या यह है कि अगर मैं पकड़ ब्लॉक के अंदर फिर से फेंकने के अलावा कुछ फेंक देता हूं, प्रोग्राम को निरस्त करके कॉल किया जाएगा और जीसीसी 4, में त्रुटि संदेश दिया जाएगा "टर्म 'को' int 'के उदाहरण को फेंकने के बाद बुलाया जाता है। अगर मैं सिर्फ "फेंक" का उपयोग करता हूं पकड़ ब्लॉक के अंदर फिर से फेंकने के लिए, सब ठीक हो जाएगा।अगर मैं सी ++
#include <iostream>
#include <exception>
#include <stdexcept>
using namespace std;
int main()
{
try{
throw std::string("first throw");
}
catch(std::string &x){
try{
std::cout << x << std::endl;
// throw; // if I use this line, all is fine.
throw int(2); // but if I use this line, it causes Abort() to be called
}
catch (int &k){
throw;
}
catch(...)
{
cout << "all handled here!"<< endl;
}
}
catch(...){
std::cout<< "never printed" << endl;
}
}
यदि आप किसी पकड़ से फेंकते हैं तो इसकी अपेक्षा की जा सकती है। – AJG85