không thể (trong C ++) để bắt tất cả các ngoại lệ theo cách di động. Điều này là do một số ngoại lệ không phải là ngoại lệ trong ngữ cảnh C ++. Điều này bao gồm những thứ như chia cho các lỗi không và những thứ khác. Có thể hack về và do đó có khả năng đưa ra các ngoại lệ khi những lỗi này xảy ra, nhưng nó không dễ thực hiện và chắc chắn không dễ để có được ngay trong một cách di động.
Nếu bạn muốn bắt tất cả các ngoại lệ STL, bạn có thể làm
try { ... } catch( const std::exception &e) { ... }
Cái nào sẽ cho phép bạn sử dụng e.what()
, cái này sẽ trả về a const char*
, cái này có thể cho bạn biết thêm về chính ngoại lệ đó. Đây là cấu trúc giống với cấu trúc Java, bạn đã hỏi về nhiều nhất.
Điều này sẽ không giúp bạn nếu ai đó đủ ngu ngốc để ném một ngoại lệ không được thừa hưởng std::exception
.