Meilleures pratiques: Utilisation de @throws en php-doc, et comment il pourrait en être de la poignée

Disons que j'ai une classe avec une méthode comme ceci:

/*
 *
 * Loads the user from username.
 *
 * @param string $username The username
 *
 * @return UserInterface
 *
 * @throws userNotFoundException if the user is not found
 */
public function getUser($username)
{
    //someFunction return an UserInterface class if found, or null if not.
    $user = someFunction('SELECT ....', $username);
    if ($user === null) {
        throw new userNotFoundException();
    }

    return $user
}

Maintenant, disons que someFunction pourrait jeter une InvalidArgumentException /RuntimeException /PDOException pour XYZ raisons. Que dois-je faire? Et ce n'est pas?

Numéro 1

Ajouter toutes les exceptions possibles qui pourraient jeter someFunction en php-docs.

/*
 *
 * Loads the user from username.
 *
 * @param string $username The username
 *
 * @return UserInterface
 *
 * @throws userNotFoundException if the user is not found
 * @throws InvalidArgumentException
 * @throws ...
 */

Numéro 2

Ajouter un bloc try-catch pour s'assurer que la méthode doit lancer des exceptions documentée

/*
 *
 * Loads the user from username.
 *
 * @param string $username The username
 *
 * @return UserInterface
 *
 * @throws userNotFoundException if the user is not found
 * @throws RuntimeException 
 */
public function getUser($username)
{
    try {
        $user = someFunction('SELECT ....', $username);
    } catch (Exception $e) {
        throw new RuntimeException();
    }

    if ($user === null) {
        throw new userNotFoundException();
    }

    return $user
}

Numéro 3

Ne pas faire n'importe quoi.

  • Quelle est la différence de Nombre1 et Nombre2 en ce qui concerne la documentation? Êtes-vous demander à propos de les meilleures pratiques pour la documentation ou de la manipulation de l'exception?
  • Je dirais à la fois..
InformationsquelleAutor Federkun | 2013-03-23