Bonjour, je cherche à créer des rapports d'erreur automatique avec info de ligne. Voici l'exemple suivant:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
 
class MonException : public exception
{
  vector<int> _line;
  MonException(int line)
  {
    _line.push_back(line);
  }
 
  void what()
  {
    for (int i=0 ; i < _line.size() ; ++i)
      cout << "error at " << _line[i] << endl;
  }
 
  void up(int line)
  {
    _line.push_back(line);
  }
}
 
void inner_boom(void)
{
  try
  {
    //Some error
    throw MonException(__LINE__);
  }
  catch(MonException e)
  {
    e.up(__LINE__);
    throw e;
  }
}
 
void boom(void)
{
  try
  {
    inner_boom();
  }
  catch(MonException e)
  {
    e.up(__LINE__);
    throw e;
  }
}
 
void main()
{
  try
  {
    boom();
    boom();
  }
  catch(MonException e)
  {
    e.what();
  }
}

Dans mon exemple je peux tracer (presque) toute la remontée de la chaine d'erreur:
- A quel endroit ça a pété dans la fonction inner_boom et où l'exception a été traitée.
- Puis je peux savoir qu'elle est passée par la fonction boom
- Au final dans le main je peux faire un affichage de toute la remontée de l'erreur

Il manque une chose : Je ne sais pas comment faire pour savoir si ça a pété au 1er ou au 2eme appel à boom dans le main