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
Partager