3

私はこれを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++バージョンについて3つの質問があります。

  • これは、この種の問題に対して受け入れられているアプローチですか?somethingまたは、を参照として渡す方が一般的aFunctionですか?
  • 安全somethingからの復帰としての私の割り当てはありますか?aFunction...具体的には、最初に割り当てられていたメモリが"A default value."解放されますか?
  • 例外がスローされた場合に表示されない副作用はありますか?
4

1 に答える 1

6

これは、この種の問題に対して受け入れられているアプローチですか?

はい。

それとも、何かを参照としてaFunctionに渡す方が一般的ですか?

いいえ。

aFunctionからのリターンとしての何かへの私の割り当ては...安全ですか?具体的には、元々「デフォルト値」に割り当てられていたメモリです。リリースされましたか?

はい。

例外がスローされた場合に表示されない副作用はありますか?

いいえ。

于 2012-12-02T14:43:42.720 に答える