使用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程序员来说应该是显而易见的事情。
答案 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
。