为什么我不能抓住我的例外?

1 c++ exception

我有以下函数捕获ComObject的系统异常并抛出我自己的异常:

int TReader::ExecSQL(...) {
  try {
    // ...
  } catch (Comobj::EOleException& e) {
    throw myDBError("TReader::Open", "TReader", e.Message);
  }
// ...   
}
Run Code Online (Sandbox Code Playgroud)

我无法捕获自己的异常,总是"异常未知!"!为什么?

void main() {
  try {
    ExecSQL(...);
  } catch(myDBError& e) {
    log(e.Message);
  } catch(...) {
    log("Exception unknown!");
  }
}
Run Code Online (Sandbox Code Playgroud)

Bat*_*eba 7

catch(const myDBError& e) {改用.

匿名临时不能绑定到非const引用,因此throw不会在当前catch站点拦截a .