2014-02-21 72 views
8

例如,請考慮下面的代碼:我應該將PHPDoc中的@throws添加到使用拋出異常的函數的函數中嗎?

在DOC集團也
/** 
* @param array $array 
* @param string $key 
* @return mixed 
* @throws \InvalidArgumentException 
*/ 
private function getArrayEntry(& $array, $key) 
{ 
    if (!array_key_exists($key, $array)) { 
     throw new \InvalidArgumentException(
      'Invalid array of values for location. Missing '.$key.'.' 
     ); 
    } 

    return $array[$key]; 
} 

/** 
* @param array $data 
* @return Location 
*/ 
public function createFromArray(array $data) 
{ 
    $this->getArrayEntry($data, 'name'); 
} 

如果第二種方法有拋出:?

如何將它與帶有'throws'關鍵字的Java相比較?

回答

4

@throws應該只放在拋出異常的方法的docBlock中。 如果你把它放在堆棧中,它將是多餘的,並將違反DRY原則!

在java中,你可以拋出:拋出和選擇..see here

順便說一句:你扔了錯誤的異常類型。您應該輸入\OutOfBoundsException。否則,這是違反POLA\InvalidArgumentException適用於意外的參數類型。

+0

謝謝你親切的Mamuz爲偉大的提示! –

+1

我通常在這裏同意Mamuz,但我也會考慮文檔讀者只會看到公共createFromArray()而不是私人getArrayEntry()的觀點,所以只有這樣才能向API讀者傳達有關拋出的異常將顯示在公共方法的docblock中。 – ashnazg

相關問題