2013-02-07 56 views
2

使用Zend Framework時,如果傳遞的參數被認爲是非法的,我想在模型類的特定方法內拋出一個異常。在Java中,例如,我會做這樣的事情:選擇合適的Zend Framework異常類

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

然而,據我可以看到像IllegalArgumentException,PHP和Zend框架缺乏這種基本的內置異常類。那麼,我應該如何正確地傳遞一個實際上描述出錯的異常?自己創建這樣的異常類?但是,這不是框架應該消除的這種代碼嗎?

我剛開始學習Zend Framework。我在我的生活中沒有寫過很多PHP,所以請隨時向我解釋一些你認爲應該對於一個體面的PHP程序員來說顯而易見的東西。

回答

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內置的excepition:

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框架2具有更具體的exceptions可用。