什么时候应该抛出InvalidArgumentException和BadMethodCallException?

时间:2016-09-02 20:42:23

标签: php exception exception-handling

在以下示例中,什么是适当的异常类型?应该InvalidArgumentException什么时候抛出BadMethodCallException?看起来这个例子属于PHP手册提供的任何定义:

  

BadMethodCallException:如果回调引用了未定义的方法或者缺少某些参数,则抛出异常。

     

InvalidArgumentException:如果参数不是预期的类型,则抛出异常。

class Foo
{
    public function Bar($arg1, $arg2)
    {
        if (!$arg1 && !$arg2)
        {
            // InvalidArgumentException or BadMethodCallException?
            throw new Exception('Both arguments are required.');
        }
        ...
    }
    ...
}

$Foo = new Foo();
$Foo->Bar(null, null); // Exception

1 个答案:

答案 0 :(得分:0)

BadMethodCallException应该被抛出 当传递的参数没有你期望的类型时(例如你期望一个数组,但你得到一个字符串),你会抛出InvalidArgumentException