2014-05-13 3 views
1

내가 가지고있는이 같은 일부 코드 : someMethod가 발생하는 경우일반적인 캐치 C++ 내부 예외의 유형을 알아

void myMethod(){ 
     try{ 
     someMethod(); 
     } 
     catch(std::exception e){ 
     std::cout<<"std::exception"<<std::endl; 
     } 
     catch(...){ 
     std::cout<<"..."<<std::endl; 
     } 
    } 

건은 예외가

항상 인쇄하는 것을 "..."

. 또한 someMethod 메서드는 저에게 작성되지 않았으며 어떤 종류의 예외가 throw 될 수 있는지 알지 못합니다 (설명서 없음).

제 질문은 catch(...) 블록에있을 때 어떤 종류의 예외 (클래스 유형)가 던져 졌는지 어떻게 알 수 있습니까?

경우에 따라 소프트웨어가 catch(...) 안에 들어가고 그 상황을 저장하기 위해 예외를 잡는 이유를 알고 싶습니다.

아이디어가 있으십니까?

+1

[현재 예외] (http://en.cppreference.com/w/cpp/error/current_exception)를 가져 오는 것으로 시작합니다. – Mgetz

답변

1

예외 유형을 판별 할 수있는 방법은 없습니다 (유형 정보를 제공하지 않는 std :: exception_ptr (C++ 11)에 할당 할 수는 없지만).

관련 문제