Je veux créer un tas d'erreurs. chacun spécifique à sa propre classe et module. Ensuite, je voudrais attacher l'id à une exception alors quand mon msg change l'identifiant est toujours le même. Comment puis-je créer cette liste d'erreurs sans maintenir une grande énumération globale?Comment créer un ID d'erreur unique global? C#
Répondre
Diviser le nombre hexadécimal 32 bits non signé couvre comme une hiérarchie:
0xMMCCCEEE
où:
- MM est le module ID
- CCC est l'ID de classe
- EEE est erreur ID
Ensuite, vous pouvez avoir 0 à 0xFF (256) modules, et 0 à 0xFFF (4096) chacune des classes et des erreurs, et vous devez seulement vous assurer que chaque erreur est unique à sa classe, et chaque classe est unique à son module, vous ne devez pas Je dois garder tous les messages d'erreur dans une seule table géante.
Exemple:
0x0401D00A
C'est le module 04, classe 01D, 00A d'erreur.
Générez un GUID pour chaque erreur.
Quel est le but d'avoir un identifiant unique pour chaque erreur? Toute exception que votre code lance déjà contient des informations qui l'identifient de manière unique, c'est-à-dire le type d'exception et le nom du module et la ligne de code qui l'a lancé. Vous n'avez pas besoin d'attribuer un ID à une exception pour savoir que ce n'est pas la même exception qu'une exception avec un type, un module ou une ligne différent. En règle générale, la nécessité d'attribuer un ID unique à une entité découle du besoin de conserver d'autres informations sur cette entité dans un type de stockage durable. Quelles sont les caractéristiques de ce magasin durable? Ces exigences vont presque certainement servir de base à l'évaluation de l'adéquation de tout système d'identification particulier que vous avez conçu. Que sont-ils?
La raison la plus courante est que les erreurs peuvent être citées en communication avec les utilisateurs, tech. dossiers de soutien, etc. IBM a suivi cette approche religieusement pendant des décennies. –
La réduction d'un élément d'information long-ish en un identificateur court a une valeur qui peut être mesurée assez facilement en comparant l'espace requis par les deux descriptions. C'est pourquoi http://tinyurl.com/ existe. –
Vous commencez à apprécier quand vous avez votre application localisée dans une douzaine de langues différentes. Supposons qu'un client chinois vous envoie un rapport de bogue avec la capture d'écran ci-jointe d'un message d'erreur - en chinois, naturellement. S'il a un code d'erreur, il suffit de le rechercher et de savoir de quoi il s'agit. Si ce n'est pas le cas, vous devez trouver quelqu'un qui connaît le chinois ... –
Guid.CreateGuid();
Il est naïf de pouvoir attribuer un "point d'erreur" à chaque "erreur" possible. Prenons un exemple simple, où une méthode renvoie une erreur particulière (je serai courtois et dire « jette », mais dans le contexte, il a utilisé des « retours »):
public void MyMethod() {
// ...
throw new ErrorException(ErrorCodes.MyMethodError1); // Or something
}
Peut-être que cette méthode est appelée uniquement d'un endroit dans la version 1. Cela signifie qu'il est possible dans cette version de documenter que le code d'erreur MyMethodError1 signifie une chose particulière.
Dans la prochaine version, la méthode s'avère utile, elle est donc appelée à partir de trois endroits. En fait, il est appelé à partir de deux chemins de code différents dans l'un des endroits. MyMethodError1 signifie-t-il la même chose qu'auparavant? Je dis que non. Uniquement en tenant compte des circonstances des appels, tels que déterminés par la pile d'appels, pouvez-vous déterminer la signification de l'exception particulière?
Un code d'erreur n'aide pas avec ça.
- 1. ID global unique basé sur un entier (séquentiel) pour un emplacement donné
- 2. Comment créer un handle global en C++ - CLI
- 3. Google gadget ID unique
- 4. C# Recherche automatique d'une classe enfant par un ID unique
- 5. Génération d'un identificateur unique global en Java
- 6. API pour obtenir un ID unique iPhone?
- 7. Comment créer un ID de ligne unique dans des bases de données partagées?
- 8. Comment créer un 'événement global' dans actionscript/flex?
- 9. Comment créer un champ global sur mon site?
- 10. Obtenir un paramètre global en C#
- 11. Comment insérer unique ID composite pour Table hiérarchique (SQL Server)
- 12. Affecter un ID unique au sein de groupes d'enregistrements
- 13. Création d'un membre global
- 14. Sur un service Web C#, puis-je trouver un ID de thread unique ou un ID à des fins de journalisation?
- 15. Créer un lien URL avec un ID pour une action
- 16. Comment envoyer un ID de commande unique pour chaque demande à une passerelle de paiement?
- 17. Comment obtenir/définir un ID unique pour la cellule dans Excel via VBA
- 18. SQL: comment sélectionner un enregistrement unique pour plusieurs ID sur la base de max datetime?
- 19. Comment créer une contrainte SQL unique basée sur 2 colonnes?
- 20. Créer Unique Chaîne Iphone SDK 3.0
- 21. Comment régler GLOBAL group_concat_max_len
- 22. Algorithme pour l'ajout automatique d'un ID unique à des doublons
- 23. Attribution d'un ID unique de classe à l'instanciation: .Net
- 24. Déclaration d'un global dans un fichier d'en-tête global?
- 25. Créer unique sondage/vote/sondage en php
- 26. (Requête C++) Accès global aux objets instanciés
- 27. iPhone | Comment créer une clé unique à partir d'un NSTimeInterval?
- 28. Comment créer un nouveau bureau? C++
- 29. Comment créer un contrôle SysHeader32 en C#?
- 30. WM_MOUSEHOVER dans un hook global
Je pense que j'aime ça :) –
Pourquoi voudriez-vous attribuer des identifiants uniques aux messages d'erreur si vous n'allez pas garder tous les messages d'erreur dans une seule table géante? –