2009-06-28 4 views
12

모든 부스트 예외는 std :: exception에서 파생됩니까? 그렇지 않은 경우 모두 기본 기본 예외 클래스에서 파생됩니까?부스트 예외

답변

10

the documentationboost::exceptionstd::exception을 상속하지 않습니다.

FAQ은 이유를 설명합니다.

그러나 this page은 부스트 ​​예외를 올바르게 사용하는 방법을 설명합니다.

+3

Boost.Exception은 저장 가능하고 다시 throw 가능한 예외를위한 프레임 워크입니다. 부스트 라이브러리에서 직접 던지지는 않습니다. FAQ http://www.boost.org/doc/libs/1_39_0/libs/exception/doc/frequently_asked_questions.html은'boost :: exception'이'std :: exception'에서 상속받지 않는 이유를 설명합니다. –

1

나는 그렇게 믿는다. 부스트 라이브러리가 아닌 non-std :: exception 기반을 던지는 것을 생각할 수 없다.

7

예외 처리가 비활성화 된 구성을 지원하려면 "양호한 부스트 시민"라이브러리가 boost::throw_exception을 사용하여 버려야합니다.

boost::throw_exception 함수는 전달 된 예외의 유형 std::exception에서 공개적으로 파생해야합니다 (버전 1.37.0의 또는 그 요구 사항이 충족되지 않을 경우 그 당시 boost::throw_exception는 컴파일 오류를 발행합니다.) 또한 기본적으로, 예외가 방출 boost::throw_exception을 사용하면 boost::exception에서 파생됩니다.

그러나 Boost 라이브러리가 boost:throw_exception을 통해 예외를 던지거나 std::exception에서 파생 될 필요는 없습니다.

관련 문제