ด้วยรหัสนี้:
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&
? เราไม่สามารถกำหนดค่าให้กับการอ้างอิง lvalue ที่ไม่ใช่ const
และทำไมstd::cout
คำสั่งที่สองจึงถูกดำเนินการก่อนstd::cerr
คำสั่งแรก?
error stream
standard stream
throw
สร้างสำเนา (หรือย้าย) วัตถุที่คุณส่งไป การอ้างอิงผูกกับสำเนานั้น มันสมเหตุสมผลแล้วที่การลอกเลียนแบบจะเป็น lvalue
We caught an int exception with value: -1
บรรทัดควรได้รับการตีพิมพ์ครั้งแรก