Il n'y a pas une réponse évidente , parce que le traitement dépend de la façon dont vous souhaitez informer d'appeler le code de l'erreur. (Ou même si vous voulez interpréter cela comme une "erreur".)
Certaines bibliothèques/programmes n'aime vraiment pas le déclenchement d'exceptions, de sorte que tout faire avec la valeur du signal. Dans ce cas, le retour de NaN (parce que la valeur de l'expression est techniquement pas défini) est un choix raisonnable.
Vous pouvez également retourner NaN si vous voulez "silencieusement" ramener la valeur de l'avant à travers de multiples autres calculs. (S'appuyant sur le comportement que NaN combiné avec tout le reste est "silencieux" NaN.)
Mais notez que si vous retournez NaN pour la moyenne d'une séquence vide, vous imposer le fardeau sur l'appel de code qu'ils ont besoin de vérifier la valeur de retour de la fonction pour vous assurer que ce n'est pas NaN - soit immédiatement après le retour ou plus tard. C'est une exigence qui est facile à manquer, en fonction de combien fastidieuse, vous êtes dans la vérification des valeurs de retour.
De ce fait, d'autres bibliothèques/programmes de prendre le point de vue que les conditions d'erreur doit être "bruyant" - si vous avez passé une séquence vide à une fonction qui est de trouver le moyen de la séquence, puis vous avez de toute évidence de faire quelque chose de totalement faux, et il doit être parfaitement clair pour vous que vous avez foiré.
Bien sûr, si des exceptions peuvent être soulevées, dont ils ont besoin pour traiter, mais vous pouvez le faire à un niveau plus élevé, potentiellement centralisée au point où il fait plus de sens. Selon votre programme, cela peut être plus facile ou plus le long des lignes de votre traitement standard des erreurs régime de vérifier les valeurs de retour.
Autres personnes diront que vos fonctions doivent être robustes à l'erreur. Pour un maximum de robustesse, vous ne devriez pas utiliser NaN ou une exception - vous devez choisir un nombre réel qui "fait sens" comme valeur pour la moyenne d'une liste vide.
La valeur va être très spécifique à votre cas d'utilisation. Par exemple, si votre séquence est une liste des différences ou des erreurs, vous pouvez retourner 0. Si vous êtes à la moyenne des scores aux tests (notées de 0 à 100), vous pouvez retourner 100 pour une liste vide ... ou 0, selon que votre philosophie du "départ" score est. Tout dépend de ce que la valeur de retour va être utilisé pour.
Étant donné que la valeur de cette valeur "neutre" va être très variable basée sur l'utilisation exacte cas, vous pourriez vraiment envie de le mettre en œuvre dans deux fonctions - une fonction qui renvoie NaN ou lève une exception, et une autre qui enveloppe le fonctionnement général et l'reconnaît le "erreur" de cas. De cette façon, vous pouvez avoir plusieurs versions, chacune avec un autre "défaut" de cas. - ou si ce est quelque chose que vous avez à faire beaucoup de vous, vous pourriez même avoir la valeur "par défaut" être un paramètre, vous pouvez passer.
Encore une fois, il n'y a pas une réponse unique à cette question: la moyenne d'une séquence vide est indéfini. La façon dont vous souhaitez gérer ça dépend intimement de ce que le résultat du calcul est utilisé pour: Juste l'affichage, ou autre calcul? Si une liste est vide exceptionnelle, ou doit-elle être gérée tranquillement? Voulez-vous gérer le cas particulier au point dans le temps, il se produit, ou voulez-vous de levage/de reporter l'erreur de manipulation?