Théoriquement, l'utilisateur final ne doit jamais voir d'erreurs internes. Mais en pratique, la théorie et la pratique diffèrent. Donc, la question est de savoir quoi montrer à l'utilisateur final. Maintenant, pour l'utilisateur totalement non technique, vous voulez montrer le moins possible ("cliquez ici pour soumettre un rapport de bug" genre de choses), mais pour les utilisateurs plus avancés, ils voudront savoir s'il y a un travailler autour, si cela a été connu pendant un certain temps, etc Donc, vous voulez inclure certains sortes d'informations sur ce qui ne va pas.Marqueurs d'erreur internes
La manière classique de faire ceci est soit un assert avec un nom de fichier: numéro de ligne ou une trace de pile avec le même. Maintenant, cela est bon pour le développeur, car il le dirige droit au problème; Cependant, il présente des inconvénients significatifs pour l'utilisateur, en particulier qu'il est très énigmatique (par exemple inamical) et que les changements de code changent le message d'erreur (Google pour l'erreur ne fonctionne que pour cette version).
J'ai un programme que j'ai l'intention d'écrire où je veux résoudre ces problèmes. Ce que je veux, c'est un moyen d'attacher une identité unique à chaque affirmation de telle manière que l'édition du code autour de l'affirmation ne l'altèrera pas. (Par exemple, si je le coupe/colle dans un autre fichier, je veux que la même information soit affichée) Des idées?
Un truc que je pense est d'avoir une énumération pour les erreurs, mais comment s'assurer qu'ils ne sont jamais utilisés dans plus d'un endroit?
(Note:. Pour cette question, je suis seulement regarder les erreurs qui sont causées par des erreurs de codage non des choses qui pourraient légitimement se produire comme entrée mauvaise Otoh ces erreurs peuvent être d'un certain intérêt pour la communauté dans son ensemble. .)
(note 2: le programme en question serait une application de ligne de commande en cours d'exécution sur le système de l'utilisateur, mais encore une fois, c'est juste ma situation)
(note 3:.. la langue cible est D et I'm very willing pour plonger dans meta-programming Réponses pour d'autres langues plus que bienvenu!)
(note 4: Je souhaite explicitement NE PAS utiliser les emplacements de code réels, mais plutôt une sorte de noms symboliques pour les erreurs. En effet, si le code est modifié de quelque manière que ce soit, les emplacements des codes changent.)
Une bonne chute en arrière, mais je préfère avoir ce genre d'erreur briser la construction – BCS
@BCS ou plus des commentaires. Exécuter la vérification dans le cadre de la construction au lieu d'une partie des tests unitaires: D –