拥有一个基类处理所有异常的缺点是什么?

8
我正在做Stroustrup的C++编程语言第四版的练习。其中一个任务的要求如下:
考虑将类Exception用作所有用作异常的类的基类。它应该是什么样子?它应该如何使用?它可能有什么好处?使用这样一个类的要求可能会导致什么缺点?
答案看起来很像std :: exception,除了缺点部分 - 我唯一能想到的是__vptr的成本,这通常被认为是微不足道的。我在这里错过了什么吗?

1
这是一个基于观点的问题,取决于您如何看待异常的使用。他写下这个缺点时考虑的可能是它允许消费者编写捕获所有代码的代码,而实际上并没有解决异常情况。 - Collin Dauphinee
1个回答

1
缺点是,如果您尝试捕获继承树底部的异常,那么您将捕获所有从该异常派生的异常,其中一些可能指示与您预期非常不同的事情。
更糟糕的是,使用许多可能引发异常但并不知道某些异常含义的开发人员可能只会捕获基类Exception,并在遇到错误时返回一个不具体的Exception实例,使得调试代码变得困难,可能会导致整个程序失败,而这种异常很容易修复,不应该造成任何问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接