web-dev-qa-db-fra.com

PhpStorm: que faire des exceptions non gérées lorsque les conditions préalables sont remplies

J'aime beaucoup les outils d'inspection PhpStorm. Ils m'aident beaucoup à rédiger un meilleur code. Maintenant, j'ai la situation suivante et je me demande quelle est la meilleure façon de gérer de telles situations.

J'ai une fonction f avec une condition préalable, par exemple comme dans le code suivant:

/**
 * @param int $x
 * @throws PreconditionException x is negative
 */
 public function f(int $x): int
 {
   if ($x < 0) {
     throw new PreconditionException("the input x is negative");
   }
 }

Ensuite, j'utilise cette fonction quelque part, ce qui suit:

f(5);

Maintenant, PhpStorm me met en garde avec "Exception non gérée". Mais dans ce cas, je sais que l'exception ne sera pas levée, donc l'ajout d'un bloc try n'a pas vraiment de sens. Devrais-je simplement ignorer cet avertissement ou quel est le meilleur moyen de gérer cela?

8
blacktemplar

À partir de phpStorm version 2018.1, vous pouvez exclure toute exception de l'analyse. Allez à preferences->Languages & Frameworks->PHP et ouvrez l'onglet Analysis.

 enter image description here

Ici, vous pouvez ajouter des exceptions à la liste Unchecked Exceptions

4
pa3py6aka

La balise @noinspection peut être utilisée pour indiquer à PhpStorm de supprimer une inspection. La balise peut être utilisée au-dessus de la ligne, de la méthode ou au-dessus du fichier après <?php Word:

/** @noinspection PhpDocMissingThrowsInspection */
/**
 *
 * Cancels order.
 *
 * @return bool
 */
public static function cancel()
{
    if (!self::inProgress()) return false;
    /** @noinspection PhpUnhandledExceptionInspection*/
    static::current()->delete();
    return true;
}

La liste des inspections peut être trouvée dans cet Gist: https://Gist.github.com/discordier/ed4b9cba14652e7212f5


Vous pouvez également le désactiver via l'interface. ALT+ENTER puis flèche vers la droite et Suppress ... 

1
Orkhan Alikhanov