Avec ce code:
int main()
{
try
{
throw -1;
}
catch (int& x)
{
std::cerr << "We caught an int exception with value: " << x << std::endl;
}
std::cout << "Continuing on our merry way." << std::endl;
return 0;
}
On a:
/tmp$ ./prorgam.out
Continuing on our merry way
We caught an int exception with value: -1
Comment le catch
bloc lu -1
comme int&
? Nous n'avons pas pu attribuer de valeur à une référence de valeur non constante.
Et pourquoi la deuxième std::cout
déclaration est-elle exécutée avant la première std::cerr
déclaration?
error stream
non standard stream
.
throw
crée une copie (ou déplace) l'objet que vous lui passez. La référence se lie à cette copie. Il est en quelque sorte logique que la copie soit une valeur l.
We caught an int exception with value: -1
ligne doit être imprimée en premier.