Dengan kode ini:
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;
}
Kita punya:
/tmp$ ./prorgam.out
Continuing on our merry way
We caught an int exception with value: -1
Bagaimana catchblok membaca -1sebagai int&? Kami tidak dapat menetapkan nilai ke referensi nilai non-konstanta.
Dan mengapa yang kedua std::cout pernyataan dieksekusi sebelum std::cerrpernyataan pertama ?
error streamtidak standard stream.
throwmembuat salinan (atau memindahkan) objek yang Anda lewatkan. Referensi mengikat salinan itu. Agak masuk akal bahwa salinan tersebut merupakan nilai tambah.
We caught an int exception with value: -1garis harus dicetak pertama.