모든 부스트 예외는 std :: exception에서 파생됩니까? 그렇지 않은 경우 모두 기본 기본 예외 클래스에서 파생됩니까?부스트 예외
Q
부스트 예외
12
A
답변
10
the documentationboost::exception
은 std::exception
을 상속하지 않습니다.
FAQ은 이유를 설명합니다.
그러나 this page은 부스트 예외를 올바르게 사용하는 방법을 설명합니다.
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
에서 파생 될 필요는 없습니다.
Boost.Exception은 저장 가능하고 다시 throw 가능한 예외를위한 프레임 워크입니다. 부스트 라이브러리에서 직접 던지지는 않습니다. FAQ http://www.boost.org/doc/libs/1_39_0/libs/exception/doc/frequently_asked_questions.html은'boost :: exception'이'std :: exception'에서 상속받지 않는 이유를 설명합니다. –