Tôi thấy rằng có ba cách để bắt ngoại lệ, sự khác biệt là gì?bắt ngoại lệ bằng con trỏ trong C++
1) bắt theo giá trị;
2) bắt bằng tham chiếu;
3) bắt bằng con trỏ;
Tôi chỉ biết rằng bắt theo giá trị sẽ gọi hai bản sao của đối tượng, bắt theo tham chiếu sẽ gọi một. Vì vậy, làm thế nào về bắt bằng con trỏ? Khi nào thì sử dụng bắt bằng con trỏ? Ngoài việc ném một vật thể, tôi có thể ném một con trỏ đến một vật như thế này không?
class A {}
void f() {
A *p = new A();
throw p;
}
Bạn có thể __not__ bắt ngoại lệ bằng con trỏ. Bạn có thể bắt một ngoại lệ xảy ra là một con trỏ. Vấn đề là A và A * là hai loại hoàn toàn khác nhau. Nếu bạn ném một con trỏ đến A thì bạn chỉ có thể bắt được giá trị hoặc tham chiếu. Nhưng nó là một A * mà bạn đang đánh bắt bởi giá trị hoặc tham chiếu không phải là A. –