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:
something into aFunction as a reference?something as the return from aFunction... safe? Specifically is the memory that was originally assigned to "A default value." released? Is this an accepted approach to this kind of problem?
Yes.
Or is it more common to pass the something into aFunction as a reference?
No.
Is my assignment to something as the return from aFunction... safe? Specifically is the memory that was originally assigned to "A default value." released?
Yes.
Are there side effects I can't see in the case an exception is thrown?
No.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With