Les exceptions, introduites au départ dans le langage ADA, sont un moyen très efficace de traiter les erreurs. Il ne faut cependant pas en abuser car :
Dans l'exemple suivant, nous allons voir les
possibilités
des exceptions qui vont nous permettre ici de sortir en catastrophe
d'une
boucle et de deux fonctions:
#include <iostream>
using namespace std;
enum exception2 {Erreur1,Erreur2};
void procedure2() throw (exception2)
{
int n=20,catastrophe1=0,catastrophe2=0;
for(int i=0;i<n;i++)
{
if (catastrophe1) throw
Erreur1;
if (catastrophe2) throw
Erreur2;
if (10==i) catastrophe1=1;
cout <<i <<endl;
}
return;
}
void procedure1() { procedure2(); return; }
int main()
{
try
{
procedure1();
}
catch (exception2 e)
{
if (e==Erreur1) cout
<<
"Erreur1 a l'interieur de procedure2\n";
if (e==Erreur2) cout
<<
"Erreur2 a l'interieur de procedure2\n";
}
return 0;
}