De retour, à l'intérieur ou à l'extérieur de Try / catch?
Dans le code ci-dessous, l'IDE me prévient à propos de "Manque d'instruction return" dans la dernière parenthèse. Ce qui m'amène à me demander ici si le retour à l'intérieur de la try{}
est ok ou devrait être à l'extérieur.
Merci beaucoup.
public function getFileNamesFromKeywords( array $ids, $format ) {
try {
if(self::$dbLink) {
$ids = implode(',',$ids);
$query = 'SELECT d.id, d.wfid, d.docid , k.keyword, k.value'.
'FROM keywords k'.
'INNER JOIN documents d '.
'ON k.document_id = d.id'.
'WHERE k.document_id IN ('.$ids.')';
$results = self::$dbLink->query($query);
if( $results === false ) {
throw new Exception('Ocurrió un error al consultar a la DB.', 500);
}
$results = $results->fetchAll(PDO::FETCH_ASSOC);
$filenames = $this->buildFileNames( $results, $ids, $format );
}
else {
throw new Exception('No hay una conexión establecida con la DB.', 500);
}
return $filenames;
}
catch(Exception $e) {
$this->error = 'Error al intentar conectar con la BD: ' . $e->getMessage();
}
} //<----- Missing return statement
Après la capture ou à l'intérieur d'une clause finally
ide stupide 🙂 Pas toutes les méthodes doivent retourner quelque chose.
ide stupide 🙂 Pas toutes les méthodes doivent retourner quelque chose.
OriginalL'auteur JorgeeFG | 2013-09-23
Vous devez vous connecter pour publier un commentaire.
Si une exception est levée et a pris, ce sera le retour de la fonction?
Vous devriez avoir une instruction de retour dans le bloc catch, ou après le bloc try-catch. Avoir une instruction return dans le try-bloc n'est pas assez.
OriginalL'auteur Joni
si vous placez une instruction return dans une fonction à n'importe quel endroit puis il s'attend à ce que la fonction doit retourner quelque chose et puisque vous avez placé l'instruction de retour à l'intérieur d'un bloc try-catch ,lorsque l'IDE évalue thw code il constate que vous n'avez pas une instruction de retour pour lorsque vous essayez d'échec qui est dans le catch.
Je recommande la création d'un $response variable initialisée à faux au-dessus de la fonction à attribuer à l' $noms de fichiers, puis après le bloc try-catch retourner la somme de réponse.
En faisant ainsi vous assurer que la fonction renvoie toujours à quelque chose, soit les résultats dont vous avez besoin ou faux.
OriginalL'auteur Brian Kinyua
Le message que vous avez donné est juste un avertissement, comme votre code ne retourne rien. La meilleure option à faire que d'ajouter un retour pour vos prises, si vous voulez arrêter l'avertissement.
Il suffit d'ajouter le retour avant la fermeture de corset.
return null;
est la même quereturn;
, mais il est plus court 😉Il est de bonne pratique de faire
return null
que cela indique clairement que vous êtes de retour d'une valeur null.Je n'ai jamais réalisé que PHP a beaucoup en commun avec existentialiste de la philosophie.
montre tout aussi clairement que vous êtes de retour null. Si je voulais afficher clairement toutes les coder en PHP, alors tout le code devrait ressembler à
json_decode($var, FALSE, 512, 0);
au lieu dejson_decode($var);
...Eh bien je suis d'accord avec Gareth, parce que quelqu'un peut penser que le retour à lui seul pourrait être "faux" et avaluate contre elle avec type inclus. Depuis ce n'est que 4 lettres, je ne vois pas une grosse affaire et ajoute à la lisibilité du code.
OriginalL'auteur Gareth Luckett