Doctrineモデルに関連オブジェクトをコレクションに追加するメソッドを作成していますが、重複するオブジェクトがそのコレクションに追加されたときに例外をスローしたいと思います。
テストは次のとおりです。
public function testFluentInterface( )
{
$sport = new Sport();
$this->assertSame($sport, $sport->addCode('ANY'),
'Expected Sport to implement fluent interface.'
);
}
public function testCannotAddSameCodeMoreThanOnce( )
{
$code = 'BAZ';
$sport = new Sport();
$sport->addCode($code);
try
{
$sport->addCode($code);
$this->fail(
'Expected error when trying to add the same code to a sport more than once.'
);
}
catch( /*SomeKindOf*/Exception $e )
{
}
}
最初は、この場合にをスローするのが適切かもしれないと思いましたが、OverflowException
「この値はすでに存在します」が「このコンテナがいっぱいです」と同じかどうかはわかりません。
完全なコンテナに要素を追加すると例外がスローされます。
ありますがUnexpectedValueException
、タイプが正しくない変数に当てはまるようです。
値が値のセットと一致しない場合にスローされる例外。通常、これは、関数が別の関数を呼び出し、戻り値が特定のタイプまたは値であり、算術エラーまたはバッファ関連のエラーを含まないことを期待している場合に発生します。
私はいつでも使用できますLogicException
が、これはこのユースケースでは少し一般的なようです。
プログラムロジックのエラーを表す例外。この種の例外は、コードの修正に直接つながるはずです。
ここにもっと良い選択肢はありますか?私の観察は正しいですか?一意の値を含む必要があるコレクションに複製を追加しようとするときにスローする最も適切なSPL例外は何でしょうか。