2010-07-08 6 views
1

documentation on the boost site for lexical cast에서 숫자 형식에서 문자열 형식으로 변환 할 때 변환이 bad_lexical_cast를 throw 할 수 있다고 나와 있습니다. 분명히이 경우 예외가 발생하면 항상 처리해야합니다.catch 할 때 boost :: bad_lexical_cast

제 질문은 숫자 유형에서 문자열로가는 것은 어떨까요? 이 작업은 작동시 위험이 적지 만 지정된 예제가 catch 블록을 벗어나지 만 bad_lexical_cast를 throw 할 수 있는지 여부는 설명서에 설명되어 있지 않습니다.

log_message("Error " + boost::lexical_cast<std::string>(yoko) + ": " + strerror(yoko)); 

숫자 유형을 문자열로 변환 할 때 잠재적 인 예외를 포착해야합니까?

답변

2

필자가 아는 한, inbuilt 숫자 유형을 문자열로 표시 할 수없는 시나리오는 없습니다.

+3

그러나 변환이 실패 할 수 있습니다 - 문자열의 메모리 할당이 발생할 수 있습니다. –

+0

그건 잡히지 않고 다시 boost :: bad_lexical_cast로 던져 질까? –

+0

std :: bad_alloc으로 throw됩니다. Boost는 내부적으로 그것을 잡아서 다른 것으로 재가동 할 수도 있지만 bad_lexical_cast는 의심 스럽습니다. – Puppy

관련 문제