虽然这个问题不仅限于OpenKinect库,但这是我能想到的最好的例子来展示它。
在OpenKinect的C++封装中,每当出现问题时,它都会抛出一个runtime_error异常。这个例子来自于libfreenect.hpp。该线程是在类的构造函数中创建的。
// Do not call directly, thread runs here
void operator()() {
while(!m_stop) {
if(freenect_process_events(m_ctx) < 0) throw std::runtime_error("Cannot process freenect events");
}
}
static void *pthread_callback(void *user_data) {
Freenect* freenect = static_cast<Freenect*>(user_data);
(*freenect)();
return NULL;
}
我的问题很简单:能否以某种方式捕获这些错误并处理它们?
通常,我会处理异常或重写代码:如果我知道异常可能发生,我不喜欢程序崩溃,我宁愿干净地处理它们。有一些类库做着类似的事情,但我无法重写它们,这就是为什么我问这个问题的原因。