私はC++クラスを書いています。そのフィールドの一部は STL コンテナーであり、一部はそうではありません。メソッドを書いているうちに、メソッドに渡された無効な値をどのように処理すればよいのでしょうか? たとえば、一部のメソッドは多かれ少なかれ STL コンテナー メソッドのラッパーです。多くの STL メソッドは、無効な反復子が渡されたときに「未定義の動作」をします。STLコードがこれらのケースを無視できるため、高速になるためだと思います。
しかし、より高いレベルのコードについては、どうすればよいでしょうか? 開発者のミスによるエラーなど、予期しないエラーが発生した場合は例外をスローします。ただし、この場合、パラメーター値は、実装者ではなく、インターフェイスのユーザーに依存します。無効なパラメーターや無効なイテレーターなどを無視して、問題を下位レベルの関数に「渡す」ことができます。これにより、未定義の動作が発生しますが、例外をスローするか、少なくともエラーを報告する方法を見つけることもできます。
どうするのが一番いいでしょうか?
例: ツリー ノードを表すクラスがあり、そのクラスには std::shared_ptr パラメータを取るメソッド add_child() があります。値を確認するか、ユーザーに nullptr が渡されていないことを確認させる必要がありますか? または、無効なイテレータの場合、STL メソッドに渡すか、エラーを報告しますか? 報告する必要がある場合 - 例外は適切な解決策ですか?