2009-06-28 51 views
12

Tất cả ngoại lệ tăng có được lấy từ std :: exception không? Nếu không phải tất cả chúng đều xuất phát từ một số lớp ngoại lệ cơ sở?tăng ngoại lệ

Trả lời

10

Theo the documentationboost::exception không được kế thừa std::exception.

FAQ giải thích lý do.

Tuy nhiên this page giải thích cách sử dụng đúng ngoại lệ Boost.

+3

Boost.Exception là một khuôn khổ cho các ngoại lệ có thể lưu trữ và có thể ném lại được. Chúng không được ném trực tiếp từ bất kỳ thư viện tăng cường nào. Câu hỏi thường gặp http://www.boost.org/doc/libs/1_39_0/libs/exception/doc/frequently_asked_questions.html giải thích lý do tại sao 'boost :: exception' không kế thừa từ' std :: exception'. –

1

Tôi tin như vậy. Không thể nghĩ về một thư viện tăng ném một cái gì đó không std :: ngoại lệ dựa.

7

Thư viện "công dân Tăng cường tốt" nên sử dụng boost::throw_exception để hỗ trợ các cấu hình xử lý ngoại lệ bị vô hiệu hóa.

Các boost::throw_exception chức năng yêu cầu loại trừ thông qua xuất phát công khai từ std::exception (như các phiên bản 1.37.0 hoặc ở vùng lân boost::throw_exception sẽ phát hành một lỗi biên dịch nếu yêu cầu đó không được đáp ứng.) Ngoài ra và theo mặc định, trường hợp ngoại lệ phát ra sử dụng boost::throw_exception lấy từ số boost::exception.

Tuy nhiên, không yêu cầu thư viện Boost ném ngoại lệ qua boost:throw_exception hoặc để lấy được từ std::exception.

Các vấn đề liên quan