C で値または参照によってキャッチするには: どちらが他よりも優れているのはどのような場合ですか?

DDD
リリース: 2024-11-22 08:11:09
オリジナル
532 人が閲覧しました

To Catch by Value or by Reference in C  : When is One Better Than the Other?

C でのブロックのキャッチ : 値と参照

C では、例外を値でキャッチするか参照でキャッチするかを選択できます。 。この決定は、コードの動作と正確さに影響を与える可能性があります。

標準的な実践

C での例外の標準的な実践は、値によってスローし、参照によってキャッチすることです。

推論

値によるキャッチは、次の場合に問題が発生する可能性があります。継承階層の存在。次の例を考えてみましょう。

class CustomException {
public:
    int errorCode;
};

class MyException : public CustomException {
public:
    MyException() { errorCode = 5; }
};
ログイン後にコピー

MyException がスローされ、値によってキャッチされた場合、CustomException インスタンスに変換され、エラー コードが 0 に設定されます。これにより、予期しない動作が発生する可能性があります。

参照によるキャッチ

参照による例外のキャッチにより、元のスローされた例外が維持されるため、例外のプロパティに正確にアクセスできます。上記の例では、MyException &e をキャッチすることで、エラー コードが 5 に設定されたままになります。

値でキャッチする場合

値でキャッチすることがまれにあります。次のような場合に推奨されます:

  • 例外タイプにはサブタイプがないことがわかっています。 (つまり、継承は要因ではありません)。
  • 例外オブジェクトは大きいため、コピーは非効率的です。

推奨事項

一般に、特に例外のコンテキストにおいて、例外の正しい処理を保証するために、値によるスローと参照によるキャッチという標準的な慣行に従うことを強くお勧めします。継承。

以上がC で値または参照によってキャッチするには: どちらが他よりも優れているのはどのような場合ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート