The following code example is taken from the book
Object-Oriented Programming in C++
by Nicolai M. Josuttis, Wiley, 2002
© Copyright Nicolai M. Josuttis 2002
char f1 (const std::string s, int idx)
{
std::string tmp = s; // local object that is destroyed
//... // if there is an exception
char c = s.at(idx); // could trigger an exception
//...
return c;
}
void foo()
{
try {
std::string s("hello"); // is destroyed if there is an exception
f1(s,11); // triggers an exception
f2(); // is not called if there is an exception in f1()
}
catch (...) {
std::cerr << "Exception, but we will go on" << std::endl;
}
// program continues here after the exception in f1()
//...
}