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 catch
blok membaca -1
sebagai int&
? Kami tidak dapat menetapkan nilai ke referensi nilai non-konstanta.
Dan mengapa yang kedua std::cout
pernyataan dieksekusi sebelum std::cerr
pernyataan pertama ?
error stream
tidak standard stream
.
throw
membuat 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: -1
garis harus dicetak pertama.