首页 > 解决方案 > 使用什么内置异常来要求调用方法?

问题描述

假设您希望在调用另一个方法之前先调用某个方法。是否有适当的内置例外?例如,

class Foo
{
    private $bar;

    public function getBar()
    {
       if (!$this->bar)
          throw new Exception('must call setBar() first');

        return $this->bar;
    }

    public function setBar($bar)
    {
        $this->bar = $bar;    
    }
}

Exception在这个例子中,什么内置异常是泛型的合适替代品?

标签: phpexception

解决方案


这是php7的官方异常层次结构

http://php.net/manual/en/spl.exceptions.php


引起我注意的例外是

LogicException

  • 表示程序逻辑错误的异常。这种异常应该直接导致代码中的修复。

BadMethodCallException

  • 如果回调引用未定义的方法或缺少某些参数,则会引发异常。

BadMethodCallException似乎不太合适,而LogicException听起来像是所有内置异常中最好的。


推荐阅读