C の例外処理テクニック : ポインターによるキャッチ
C では、値、参照、またはポインタ。各メソッドには独自の長所と短所があります。
値によるキャッチ
値による例外をキャッチする場合、コピー セマンティクスが使用されます。例外オブジェクトの新しいコピーが作成されます。これには、オブジェクトのデータが複製されます。これは、大きなオブジェクトの場合は非効率的になる可能性があります。
参照によるキャッチ
参照による例外をキャッチする場合、元の例外オブジェクトが参照されます。コピーが発生しないため、値で取得する場合と比べて効率が向上します。ただし、ダングリング参照を避けるように注意する必要があります。
ポインターによるキャッチ
ポインターによる例外のキャッチは、参照によるキャッチと似ていますが、例外へのポインターが使用される点が異なります。例外オブジェクトは直接参照ではなくキャッチされます。このメソッドは、例外オブジェクトが不要になったときに、例外オブジェクトに割り当てられたメモリを解放できるため、例外処理を最も詳細に制御できます。
例外オブジェクトへのポインタをスローすることは、一般的には例外であることに注意することが重要です。落胆した。代わりに、スマート ポインタ (shared_ptr など) を使用して例外オブジェクトのメモリを管理することを検討してください。
推奨事項
標準的な C の推奨事項は、スローすることです。値によるキャッチと参照によるキャッチ。このメソッドは効率的であり、ダングリング参照から保護します。
追加の注意
サンプル コード内:
class A {} void f() { A *p = new A(); throw p; }
オブジェクトへのポインタをスローするキャッチ サイトで手動でメモリ管理を行う必要があるため、お勧めできません。オブジェクトをスローする必要がある場合は、shared_ptr などのスマート ポインターの使用を検討してください。
以上がC で最適な例外処理手法を選択する方法: 値、参照、またはポインタ?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。