我正在使用Stroustrup的C ++编程语言第4版进行练习。其中一项任务是这样制定的:
考虑使用类Exception作为用作异常的所有类的基础。它应该是什么样的?该如何使用?这有什么用呢? 要求使用此类可能会导致哪些缺点?
答案看起来非常像std::exception
,除了缺点部分 - 我唯一可以想象的是__vptr
的成本通常被认为是微不足道的。我在这里缺少什么?
答案 0 :(得分:1)
缺点是,如果您尝试捕获继承树底部的异常,您将捕获从该异常中派生的所有异常,其中一些异常可能表示与您期望的异常。< / p>
更糟糕的是,开发人员使用了许多可能抛出异常的函数,并且不知道其中的一些是什么意思,可能只是捕获基类Exception,并且在遇到时只返回一个非特定的Exception实例错误,使调试代码变得困难,并且可能导致整个程序失败只是因为一个容易修复的异常,不应该导致任何问题。