Autor Zpráva
Hologos
Profil
Zdravím,
chci se zeptat, zda-li se má psát @throws Exception u všech metod, které volají nějakou validaci a ta, když selže, hodí vyjímku.

Příklad

/**
 * Validates input.
 * 
 * @param mixed $input
 * @return void
 * @throws Exception if validation fails.
 */
public function validate($input)
{
  // validace
  
  if(!$valid)
  throw new Exception('aa');
}

/**
 * Prints the message.
 * 
 * @param string $message
 * @return void
 * @throws Exception if $message is not a valid string.
 */
public function echoIT($message)
{
  $this->validate($message);
  
  echo $message;
}


Má tam být to zvýrazněné nebo ne?
Joker
Profil
Hologos:
Na řádku 3 má být throw, ne throws. (příspěvek už opraven)

Zní tedy otázka, jestli v dokumentaci metody echoIT má být „@throws Exception“?
Taky jsem pátral a došel k názoru, že má.
Pokud tedy ta metoda tu výjimku nezachytí.

Tj. můj soukromý názor:
/**
* Tady bude, že může vyhodit Exception
* @throws Exception 
*/
public function haziVyjimku()
{
  throw new Exception("exception!");
}

/**
* Tahle taky může vyhodit Exception
* @throws Exception 
*/
public function foo()
{
  $this->haziVyjimku();
}

/**
* Tahle nevyhazuje Exception
*/
public function bar()
{
  try
  {
     $this->haziVyjimku()
  }
  catch(Exception $e)
  {
    echo("Error!");
  }
}
Hologos
Profil
Já to psal v rychlosti a nasekal jsem tam tolik překlepů, že to snad není ani možné..
Zatím jsem to tak do teďka psal, smazat to je vždycky jednodušší než to všude dopisovat.
Počkám ještě na názory ostatních, díky.
Jan Tvrdík
Profil
Hologos:
Souhlasím s Jokerem.
joe
Profil
Ano, psát to tam všude. Protože pak by bylo asi docela nepříjemný dostávat se až do několik předešlých metod, jestli tam k nějaké vyjímce může dojít...Zdá se mi to dost nevyřešené, stejně jako v C#, osobně jsem se na to ptal na jiném fóru. Zdá se mi dobré, jak to je v Javě, že tam prostě musí být za názvem metody "throws ...", pokud nějakou vyjímku chci propustit a pokud ne, tak ji zachytit, ale ty se ptáš na PHPDoc

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0