选择适当的Zend Framework异常类

时间:2013-02-07 06:35:30

标签: zend-framework

使用Zend Framework,如果传递的参数被认为对该方法不合法,我想在我的模型类中的特定方法中抛出异常。例如,在Java中,我会这样做:

public void addName(String name) {
 if (name.equals('')) {
  throw new IllegalArgumentException();
 }
 // Other code if everything is ok.
} 

但是,据我所知,PHP和Zend Framework缺少像IllegalArgumentException这样的基本内置异常类。那么我应该使用什么来正确传递实际描述出错的异常呢?自己创建这样的异常类?但这不是一种框架应该消除的代码吗?

我刚刚开始学习Zend Framework。我生命中没有写过很多PHP,所以请随意向我解释一些你认为对于一个体面的PHP程序员来说应该是显而易见的事情。

1 个答案:

答案 0 :(得分:2)

以下是PHP SPL exception class中可用例外的列表。

Exception
     LogicException
         BadFunctionCallException
         BadMethodCallException
         DomainException
         InvalidArgumentException
         LengthException
         OutOfRangeException
     RuntimeException
         OutOfBoundsException
         OverflowException
         RangeException
         UnderflowException
         UnexpectedValueException

Zend Framework的Zend_Exception只是PHP内置异常的包装器,但是大多数主要组件都有一个可调用的异常类。

例如:

public function setId($id)
    {
        $validator = new My_Validator_Id();
        if ($validator->isValid($id)) {
            $this->id = $id;
            return $this;
        } else {
            throw new Zend_Validate_Exception("$id is not a valid value for the ID field.");
        }
    }

或PHP内置的例外:

public function __get($name)
    {
        $property = strtolower($name);

        if (!property_exists($this, $property)) {
            throw new \InvalidArgumentException(
                "Getting the property '$property' is not valid for this entity");
        }
        //truncated...
    }

Zend Framework 2提供了更具体的exceptions