Ngoại lệ chính để ném nội dung bắt nguồn từ std::exception
sẽ là nếu bạn đang sử dụng một số khung (ví dụ: MFC) với phân cấp ngoại lệ của riêng nó. Trong trường hợp đó, bạn thường muốn lấy được từ một vị trí thích hợp trong hệ thống phân cấp của họ thay thế. Lưu ý rằng tôi không đặc biệt cố gắng giữ MFC như là một ví dụ về xử lý ngoại lệ sạch (hoặc thiết kế sạch nói chung), chỉ là một ví dụ về một khuôn khổ bao gồm một hệ thống phân cấp ngoại lệ. Khi bạn đang sử dụng một khung công tác đã định nghĩa một hệ thống phân cấp ngoại lệ, bạn thường sử dụng nó tốt hơn.
Nói cách khác, không giống như tùy chọn trong C++ nếu không, thường được chấp nhận rằng ngoại lệ phải là một phân cấp đơn nguyên, nguyên khối với một gốc đơn. Đối với thư viện chuẩn, gốc đơn đó là std::exception
, nhưng các khung công tác khác có các lựa chọn thay thế và nếu chúng cung cấp một phương pháp bạn thường muốn phù hợp với bạn.
Nguồn
2012-02-27 23:31:48
Không ném chuỗi hoặc int! Nếu bạn luôn ném các lớp con của 'std :: exception', bạn có thể đặt một mệnh đề catch-all trong' main' xử lý tất cả các ngoại lệ không được xử lý ở nơi khác và in 'what()' của ngoại lệ. –