小编lit*_*les的帖子

在 C++ 函数声明中 throw 是否排除了引发其他异常?

我继承了一个 C++ 项目,其函数定义如下:

void myDoc::parseDoc(string& path) throw(docError);

parseDoc函数调用抛出一个库libError,主要功能是通话parseDoc渔获量都docErrorlibError和记录它们。 parseDoc本身不会抛出任何异常,但我预计libError库中的s 仍会被main. 他们没有 - 我只是得到一个核心转储,堆栈上没有任何用处。

我尝试了对parseDoc. 其中一些被libError传递到链条上。有些没有:

  1. 捕获libError并重新抛出它 - 不起作用
  2. 捕获libError并将其复制到 adocError并抛出 - 有效
  3. 指定但throw(docError, libError)不捕获任何东西 - 有效
  4. throw()从函数定义中删除并且不捕获任何东西 - 有效

所以我的问题是 -throw(docError)向这个函数定义添加 a是否专门防止其他异常从堆栈向上传递给调用者?如果是这样,为什么有人想要这样做?如果没有指定函数抛出异常只是按照我一直认为异常应该工作的方式工作,那么throw(e)首先规范的重点是什么?

c++ exception

0
推荐指数
1
解决办法
473
查看次数

标签 统计

c++ ×1

exception ×1