虽然这个问题不仅限于 OpenKinect 库,但它是我能想出的最好的例子来展示它。
在 OpenKinect 的 C++ Wrapper 中,每当出现问题时,它都会引发 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;
}
我的问题很简单:是否有可能以某种方式捕获这些错误并处理它们?
通常,我会处理异常,或者重写代码:我不喜欢程序因为异常而崩溃,如果我知道它们可能会发生,我宁愿干净地处理它们。有一些库可以做类似的事情,我无法重写,因此我来问这个问题。