Utilisation du mécanisme standard de captage d'erreur

On liste ici les situations d'erreur captées par le mécanisme throw/try/catch. Une situation d'erreur donnée (par exemple un indice hors limites) peut se rencontrer dans plusieurs services sur les tableaux. Et tous les services sur les tableaux ne révèlent pas des situations d'erreur.

On liste ci-dessous les capteurs prédéfinis. L'édition du message d'erreur y est suivie de l'arrêt du programme. Le message édité donne une indication sur la portion de code applicatif qui a appelé le service en situation d'erreur.

TabIndexOutOfRange : On fait référence à un élément du tableau, mais avec un indice invalide, c'est-à-dire en dehors de ses limites en mémoire. Les services de bas niveau qui rencontrent cette erreur sont, avec l'exception correspondante :
l'opérateur []Y/C] : OUT_OF_TAB_RANGE_OP
les méthodes suivantes :
get_nth : OUT_OF_TAB_RANGE_GET_NTH
insert : OUT_OF_TAB_RANGE_INSERT
remove : OUT_OF_TAB_RANGE_REMOVE
remove_from : OUT_OF_TAB_RANGE_REMOVE_FROM
remove_to : OUT_OF_TAB_RANGE_REMOVE_TO
replace_by_list : OUT_OF_TAB_RANGE_REPLACE_L
replace_by_item : OUT_OF_TAB_RANGE_REPLACE_I

void UnCodeAppelant() {
  Tableau<int>* tab = new Tableau<int>(0, 10); // un tableau de 10 éléments tous égaux à 0
  try {
    int index = f();  // une fonction retournant un entier
    int k = (*tab)[index];
  }
  catch (int e) { 
    TabIndexOutOfRange(e, "UnCodeAppelant", tab, index, TRUE);
  }
}
>>
!!!============== TabIndexOutOfRange ==============
   operator [] : 12 est un indice hors limites pour Tableau 8b60f08 de 10 éléments
   au cours de l'exécution de 'UnCodeAppelant'
!!!============================

VoidArray : On fait référence à un élément d'un tableau qui n'en a pas. Les services de bas niveau qui rencontrent cette erreur sont les méthodes , avec l'exception correspondante :
front : VOID_ARRAY_FRONT
back : VOID_ARRAY_BACK

void UnCodeAppelant() {
  Tableau<int>* tab = new Tableau<int>(); // un tableau encore vide
  try {
    int elem = tab->front();
  }
  catch (int e) {
    VoidArray(e, "UnCodeAppelant", tab, TRUE);
  }
}
>>
!!!============== VoidArray ==============
   front : le Tableau 8b60f08 ne possède aucun élément
   au cours de l'exécution de 'UnCodeAppelant'
!!!============================

MustBePresent : On cherche à enlever un élément d'un tableau, mais cet élément réputé présent est absent. Le service de bas niveau qui rencontre cette erreur est la méthode , avec l'exception correspondante :
remove_first : MUST_BE_PRESENT_REMOVE_FIRST

void UnCodeAppelant() {
  Tableau<Entity*>* tab = new Tableau<Entity*>();
  Entity* pA = new Entity();
  Entity* pB = new Entity();
  tab->push_back(pA);
  try {
    tab->remove_first(pB, TRUE);  // TRUE : pB must be present
  }
  catch (int e) {
    MustBePresent(e, "UnCodeAppelant", tab, TRUE);
  }
}
>>
!!!============== MustBePresent ==============
   remove_first : le Tableau 8b60f08 ne possède pas l'élément à enlever
   au cours de l'exécution de 'UnCodeAppelant'
!!!============================

This page was generated with the help of DOC++.