Với mã này:
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;
}
Chúng ta có:
/tmp$ ./prorgam.out
Continuing on our merry way
We caught an int exception with value: -1
Làm thế nào để catchkhối đọc -1là int&? Chúng tôi không thể gán giá trị cho tham chiếu lvalue không const.
Và tại sao std::coutcâu lệnh thứ hai được thực thi trước std::cerrcâu lệnh đầu tiên ?
error streamkhông standard stream.
throwtạo một bản sao (hoặc di chuyển) đối tượng bạn truyền cho nó. Các tài liệu tham khảo liên kết với bản sao đó. Nó có ý nghĩa rằng bản sao là một giá trị.
We caught an int exception with value: -1dòng nên được in đầu tiên.