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 để catch
khối đọc -1
là 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::cout
câu lệnh thứ hai được thực thi trước std::cerr
câu lệnh đầu tiên ?
error stream
không standard stream
.
throw
tạ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: -1
dòng nên được in đầu tiên.