我這個做了很多在Java中...返回從函數的std :: string可能會拋出異常
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
作爲參考傳入aFunction
? - 我的任務是
something
作爲從aFunction...
返回的安全嗎?特別是最初分配給"A default value."
的內存是否已發佈? - 在引發異常的情況下,我看不到副作用嗎?
'趕上(...)'是更普遍的;它會捕捉任何東西,這在這裏看起來很合適。 –
@Pete:我不知道......該函數被稱爲'aFunctionThatMightThrowAnException',而不是'aFunctionThatMightThrowAValueOfAnyTypeWhatsoever'。 –
@LightnessRacesinOrbit - 如果目標是捕獲所有異常,我不會看到僅捕獲某些類型的異常。 –