Reputation: 4349
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? Upvotes: 3
Views: 161
Reputation: 385204
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.
Upvotes: 6