Bonjour,
Je voudrais mettre en place un system d'exception (sous windows && gcc) me permettant d'intercepter ce type d'erreur. Avec catch(...) evidement ca ne le fais pas.
j'ai essayer "__except" mais visiblement c'est du visual.
merci de votre aide
Version imprimable
Bonjour,
Je voudrais mettre en place un system d'exception (sous windows && gcc) me permettant d'intercepter ce type d'erreur. Avec catch(...) evidement ca ne le fais pas.
j'ai essayer "__except" mais visiblement c'est du visual.
merci de votre aide
- Sous nux: EDIT: Apparemment, ça envoie le signal SIGFPE (même pour des entiers?)
- Sous Windows, avec Visual : Structured Exception Handling (SEH) (__try/__except)
- Sous Windows, avec MinGW : Je ne sais pas si MinGW supporte __try/__except.
On t'avait déjà dit que c'est pas possible en C++ standard (avec try / catch). Par contre on peut le faire en interceptant le signal SIGFPE qui est émis à chaque exception arithmétique (qui n'est pas forcément une division par 0).
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 #include <iostream> #include <csignal> #include <cstdlib> using namespace std; void handle_signal(int param) { cout << "Une erreur arithmetique s'est produite." << endl; exit(EXIT_FAILURE); } int main () { signal (SIGFPE, handle_signal); cout << 5 / 0 << endl; return 0; }
Et pour plus d'information: wikipedia
Merci à tous, c'est exactement ce que je cherchais.