I do this a lot in Java…
String something = "A default value.";
try {
something = this.aFunctionThatMightThrowAnException();
} catch (Exception ignore) { }
this.useTheString(something);
Now I’m trying to find an equivalent approach for std::string. Here is what I have…
std::string something("A defualt value.");
try {
something = this->aFunctionThatMightThrowAnException();
} catch (const std::exception& ignore) { }
this->useTheString(something);
For completeness, here is what aFunctionThatMightThrowAnException() might look like…
std::string MyClass::aFunctionThatMightThrowAnException() {
/* Some code that might throw an std::exception. */
std::string aString("Not the default.");
return aString;
}
I have three questions about the C++ version:
- Is this an accepted approach to this kind of problem? Or is it more common to pass the
somethingintoaFunctionas a reference? - Is my assignment to
somethingas the return fromaFunction...safe? Specifically is the memory that was originally assigned to"A default value."released? - Are there side effects I can’t see in the case an exception is thrown?
Yes.
No.
Yes.
No.