値または参照によって例外をキャッチする場合: ベスト プラクティスへのガイド
C では、例外を処理する一般的な方法が 2 つあります。値によるキャッチと参照によるキャッチ。さまざまなシナリオでどのアプローチが望ましいかという疑問が生じます。
C の例外の標準的な慣行によれば、正しいアプローチは 値によってスローし、参照によってキャッチするです。この推奨事項の背後にある理由を見てみましょう:
値によるスロー:
参照によるキャッチ:
継承階層では値によるキャッチに問題があります:
特定のプロパティまたはメソッドをオーバーライドする例外クラス CustomException と派生クラス MyException があるとします。 。以下の例のように、値によって例外をキャッチする場合:
try { ... } catch (CustomException e) { ... }
MyException オブジェクトがスローされると、キャッチ時に CustomException インスタンスに変換され、派生プロパティが失われる可能性があります。
例:
MyException が error_code をオーバーライドする場合メンバーの場合、値でキャッチすると、MyException オブジェクトがスローされたときにエラー コードに予期しない変更が発生します。
要約:
ほとんどのシナリオでは、推奨される方法は次のとおりです。値によって例外をスローし、参照によって例外をキャッチして、継承階層に関する潜在的な問題を回避します。これにより、例外データの整合性が保証され、catch ブロック内の例外オブジェクトに直接アクセスできるようになります。
以上が値または参照によるキャッチ: C でどちらを選択すべきか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。