为所有异常设置一个基类有什么缺点?

时间:2016-11-17 19:22:24

标签: c++ exception-handling base-class

我正在使用Stroustrup的C ++编程语言第4版进行练习。其中一项任务是这样制定的:

  

考虑使用类Exception作为用作异常的所有类的基础。它应该是什么样的?该如何使用?这有什么用呢? 要求使用此类可能会导致哪些缺点?

答案看起来非常像std::exception,除了缺点部分 - 我唯一可以想象的是__vptr的成本通常被认为是微不足道的。我在这里缺少什么?

1 个答案:

答案 0 :(得分:1)

缺点是,如果您尝试捕获继承树底部的异常,您将捕获从该异常中派生的所有异常,其中一些异常可能表示与您期望的异常。< / p>

更糟糕的是,开发人员使用了许多可能抛出异常的函数,并且不知道其中的一些是什么意思,可能只是捕获基类Exception,并且在遇到时只返回一个非特定的Exception实例错误,使调试代码变得困难,并且可能导致整个程序失败只是因为一个容易修复的异常,不应该导致任何问题。