代码之家  ›  专栏  ›  技术社区  ›  reformed Ezequiel García

何时应引发InvalidArgumentException与BadMethodCallException?

  •  1
  • reformed Ezequiel García  · 技术社区  · 9 年前

    在下面的示例中,什么是适当的异常类型?何时应该 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 回复  |  直到 6 年前
        1
  •  1
  •   Charlotte Dunois    9 年前

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

    推荐文章