我在 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
在这种情况下抛出 an 可能是合适的,但我不确定“这个值已经存在”是否与“这个容器已满”相同:
将元素添加到完整容器中时引发异常。
有UnexpectedValueException
,但这似乎更适用于类型不正确的变量:
如果一个值与一组值不匹配,则会引发异常。通常,当一个函数调用另一个函数并期望返回值是某种类型或值时,会发生这种情况,不包括算术或缓冲区相关的错误。
我总是可以使用LogicException
,但这对于这个用例来说似乎有点通用:
表示程序逻辑错误的异常。这种异常应该直接导致代码中的修复。
这里有更好的选择吗?我的观察正确吗?尝试将重复项添加到必须包含唯一值的集合时,最合适的 SPL 异常是什么?