Con questo codice:
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;
}
Abbiamo:
/tmp$ ./prorgam.out
Continuing on our merry way
We caught an int exception with value: -1
Come funziona il catch
blocco di legge -1
come int&
? Non è stato possibile assegnare un valore a un riferimento al valore non costante.
E perché la seconda std::cout
istruzione viene eseguita prima della prima std::cerr
?
error stream
non standard stream
.
throw
crea una copia (o sposta) l'oggetto che gli viene passato. Il riferimento si lega a quella copia. In un certo senso ha senso che la copia sia un valore.
We caught an int exception with value: -1
riga deve essere stampata per prima.