我继承了一个 C++ 项目,其函数定义如下:
void myDoc::parseDoc(string& path) throw(docError);
该parseDoc函数调用抛出一个库libError,主要功能是通话parseDoc渔获量都docError和libError和记录它们。 parseDoc本身不会抛出任何异常,但我预计libError库中的s 仍会被main. 他们没有 - 我只是得到一个核心转储,堆栈上没有任何用处。
我尝试了对parseDoc. 其中一些被libError传递到链条上。有些没有:
libError并重新抛出它 - 不起作用libError并将其复制到 adocError并抛出 - 有效throw(docError, libError)不捕获任何东西 - 有效throw()从函数定义中删除并且不捕获任何东西 - 有效所以我的问题是 -throw(docError)向这个函数定义添加 a是否专门防止其他异常从堆栈向上传递给调用者?如果是这样,为什么有人想要这样做?如果没有指定函数抛出异常只是按照我一直认为异常应该工作的方式工作,那么throw(e)首先规范的重点是什么?