我在Java中经常这样做......
String something = "A default value.";
try {
something = this.aFunctionThatMightThrowAnException();
} catch (Exception ignore) { }
this.useTheString(something);
现在我正在尝试为std::string
. 这是我所拥有的...
std::string something("A defualt value.");
try {
something = this->aFunctionThatMightThrowAnException();
} catch (const std::exception& ignore) { }
this->useTheString(something);
为了完整起见,这aFunctionThatMightThrowAnException()
可能看起来像......
std::string MyClass::aFunctionThatMightThrowAnException() {
/* Some code that might throw an std::exception. */
std::string aString("Not the default.");
return aString;
}
我对 C++ 版本有三个问题:
- 这是解决此类问题的公认方法吗?还是将
something
intoaFunction
作为参考更常见? - 我的任务是
something
从aFunction...
安全返回吗?具体是原来分配的内存"A default value."
释放了吗? - 如果抛出异常,是否有我看不到的副作用?