나는 새 스레드를 생성하는 비 차단 기능 (즉시 반환) 일부 데이터를 구문 분석 할 수 있습니다콜백 함수를 처리 할 때 예외를 처리하는 일반적인 방법은 무엇입니까?
boost::any Parse() throw(ParseException) {
// parse something
}
typedef void (*HandlerFunc)(boost::any result);
void ParseAsync(HandlerFunc handler) {
Parser me(*this);
in_new_thread {
boost::any result = me.Parse();
handler(result);
}
}
문제는 Parse
가 예외를 던질 수 있다는 것입니다. 이러한 예외를 처리하는 일반적인 C++ 방식은 무엇입니까? 어떤 식 으로든 핸들러 함수에 대한 예외를 "넘겨야합니까?"
스레드 간 던지기는 새로운 C++ 11 표준에서만 다루어집니다. 그것은 오래된 C++의 일부가 아닙니다. –
@Kerrek SB 다행히도 저는 C++ 11 코드를 작성하고 있습니다. –
또한 예외 사양을 피하십시오 (정당한 이유로 C++ 11에서는 공식적으로 사용되지 않습니다). –