J'écris un SDK .Net personnalisé pour le programme de cartographie MapInfo Pro, mapinfo expose seulement deux méthodes à utiliser sur COM void Do(string cmd)
et string Eval(string cmd)
. Lorsque vous utilisez l'une de ces méthodes et que vous faites quelque chose invaild, il renvoie une exception COMException avec un message d'erreur et j'obtiens le code d'erreur de MapInfo. Ainsi, par exemple un message d'erreur ressemble à ceci:Création de classes d'exceptions pour les différents codes d'erreur lot
418 "Table not found."
Maintenant, je voudrais lancer une sorte de sens pleine exception plutôt que juste une exception avec un nombre et un message que les gens doivent prendre ensuite utiliser un bloc if
à vérifier quelle erreur, quelque chose qu'ils disent qu'ils veulent seulement attraper et faire quelque chose de sens avec. Quelque chose comme TableNotFoundException
.
Le plus gros problème est actuellement 1999
messages d'erreur possibles, maintenant je ne veux pas une classe d'exception pour chacun de ces erreurs.
L'idée du SDK est que les gens utilisent mes objets et méthodes plutôt que Do
et Eval
(ils peuvent toujours les utiliser s'ils le veulent).
devrais-je,
- partout dans mon SDK que j'appelle
Do
etEval
utiliser une prise d'essai puis vérifier le code d'erreur et jeter quelque chose de plus: complètement à partir de là, parce que je sais quelles erreurs je devrais .
ou
- Je somekind de Dieu liste de recherche dans le
Do
etEval
que lorsqu'unCOMException
est jeté LookUps le code d'erreur et jette l'erreur meaningfull à partir de là? Signification Je n'ai pas d'envelopper chaque appel àDo
etEval
dans des blocs de prises d'essai (il y a beaucoup d'appels)
Bit d'une chose difficile à expliquer, donc j'espère que les gens puissent le comprendre.
Merci.
++ Ce qu'il a dit, en particulier la partie concernant une petite hiérarchie d'exception. – Dustman