2013-07-19 6 views
2

icmp::resolver::query query(icmp::v4(), host, "");destination = *resolver.resolve(query);의 도움으로 호스트 이름을 확인할 때 호스트 이름을 확인할 수없는 경우 예외가 발생합니다. 이제는 예외를 잡기를 원하지만 잡히지는 않습니다. 현재 코드는 다음과 같습니다.캐치 부스트 예외

 icmp::resolver::query query(icmp::v4(), host, ""); 
     try 
     { 
      destination = *resolver.resolve(query);           
     } 
     catch(boost::exception & e) 
     { 
      //Print exception 
     } 
     catch (...) { 
      //print exception 
     } 

내가 뭘 잘못하고 있니?

업데이트 : 응용 프로그램은 Visual Studio 2012에서 만들어지고 C++ 관리되지 않는 관리되는 (.net) 코드가 있어야합니다. 부스트 버전은 1.54.0입니다.

+0

에 대한 포인터를 가지고 있지 그것을 해결? –

+0

아니, (..) – compu92

+5

에서 아무 것도 잡아 내지 않습니다. 첫 번째 코드 줄에서 충돌 할 수 있습니까? – Caesar

답변

0

오류 코드를 제공하는 icmp :: resolver 함수의 오버로드 된 함수를 사용하지 않고 해결했습니다. 그럼 난 반복자에 널 포인터 예외를 얻고는`캐치 (...)`부분에 잡을 않음 resolver.resolve(query,ec)

 { 
      icmp::resolver::query query(icmp::v4(), host, ""); 
      iter = resolver.resolve(query, ec); 
      if (!ec) 
      { 
       destination = *iter; 
      } 
      else 
      { 
       ec.value(); 
      } 
     }