생성자에서 예외를 던지는 정적 멤버가있는 라이브러리에서 dlopen -accort
-
03-07-2019 - |
문제
Dlopen 기능을 사용하여 동적 라이브러리를로드하려고합니다. 이 라이브러리에는 정적 객체가 포함되어있어 생성자에 예외가 발생합니다. Dlopen 호출 주위에 "Try-Catch (...)"블록이 있지만 예외는 포착되지 않으며 "Abort"가 인쇄 된 것을 볼 수 있습니다.
이 예외를 어떻게 잡을 수 있습니까?
해결책
짧은 대답 : 당신은 할 수 없습니다
다시 생각합니다.
원래 진술은 유지되지만 dlopen ()은 C 라이브러리 기능이라는 것을 기억해야합니다. C는 예외를 지원하지 않습니다. 따라서 C ++ 코드에서 C로 교차하는 예외를 던지면 (Global Object Back Up To Dlopen ()) 코드도 응용 프로그램 종료를 유발합니다.
여기를 봐:왜 소멸자가 예외에서 호출되지 않습니까?
예외를 던지면 응용 프로그램이 종료되는 상황입니다. 특정 상황은 다음과 같습니다.
예외는 비 지역 정적 (IE Global)의 생성자/소멸자를 피합니다.
제휴하지 않습니다 StackOverflow