Exceptions levées lorsqu'on tente d'affecter à un descripteur (constant ou variable) une valeur hors de son domaine de définition (entier, flottant, 'pointeur sur une entité', 'chaîne de caractères'.
Le domaine est :
- un ensemble d'intervalles dans les entiers ou les réels pour les types numériques
- un ensemble de chaînes de caractères pour un type 'chaîne de caractères'
- un ensemble de pointeurs sur des instances d'entités, ou bien un ensemble de classes d'entités, pour un descripteur à valeur 'pointeur sur une entité'.
Descripteur numérique :
class ClassA : public Entity {...}; ClassA::ClassA() { IntVariableDescriptor* pD = new MyDesc(); AddVariableDescriptor(pD); pD->AddSubDomain(0, 5); pD->AddSubDomain(10, 15); pD->SetValue(8); // OutOfIntDomain }Descripteur '(tableau de) pointeurs sur une entité' :
class ClassA : public Entity {...}; class ClassB : public Entity {...}; class ClassC : public Entity {...}; ClassA::ClassA() { EntityConstantDescriptor* pD1 = new MyDesc(); AddConstantDescriptor(pD); pD1->ValueClassId(CLASS_B); ClassC* pC_1 = new ClassC(); pD1->SetValue(pC_1); // OutOfEntityDomain EntityTabConstantDescriptor* pD2 = new MyTabDesc(); AddConstantDescriptor(pD); pD2->ValueClassId(CLASS_B); pD2->AddValueElement(pC_1); // OutOfEntityDomain }Descripteur 'chaîne de caractères' :
class ClassA : public Entity {...}; ClassA::ClassA() { StringConstantDescriptor* pD = new MyDesc(); AddConstantDescriptor(pD); pD->SetSubDomain("jean"); pD->AddSubDomain("pierre"); pD->SetValue("louis); // OutOfStringDomain }