З цим кодом:
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;
}
Ми маємо:
/tmp$ ./prorgam.out
Continuing on our merry way
We caught an int exception with value: -1
Як працює catchблок читання , -1як int&? Ми не змогли призначити значення посиланню на значення, яке не має значення.
І чому друге std::coutтвердження виконується перед першим std::cerrтвердженням?
error streamне standard stream.
throwстворює копію (або переміщує) об’єкт, який ви передаєте йому. Посилання пов'язується з цією копією. Це має сенс, що копія є цінністю.
We caught an int exception with value: -1Лінія повинна бути надрукована першої.