94
|
John M Gant aman_novice · 技术社区 · 15 年前 |
1
71
|
2
41
问题在于
因此,我更喜欢从
|
3
17
继承原因
如果你是为了方便,你可以继承
|
4
13
我曾经参与清理一个大型代码库,以前的作者在这里抛出int、HRESULTS、std::string、char*、random类。。。到处都是不同的东西;只要说出一个类型,它就可能被扔到某个地方。而且根本没有公共基类。相信我,一旦我们达到了这样的程度,所有抛出的类型都有一个共同的基础,我们可以抓住,并且知道没有什么会过去,事情就变得更加整洁了。所以,请帮你自己(以及那些将来需要维护你的代码的人)一个忙,从一开始就这样做。 |
5
12
你应该继承他的遗产 boost::exception Boost ,然后忽略这个建议。 |
6
11
是的,你应该从
|
7
9
您可能希望从中继承遗产的原因
|
8
6
|
9
5
Difference: std::runtime_error vs std::exception()
无论你
应该
继承与否取决于你自己。标准
|
10
3
由于该语言已经抛出std::exception,因此无论如何都需要捕获它以提供适当的错误报告。您也可以对自己的所有意外异常使用相同的捕获。而且,几乎任何抛出异常的库都会从std::exception派生它们。
或
|
11
3
如果所有可能的异常都来自
|
12
3
是否从任何标准异常类型派生是第一个问题。这样做可以为所有标准库异常和您自己的异常启用单个异常处理程序,但它也鼓励这样的捕获所有异常处理程序。问题在于,人们应该只捕获自己知道如何处理的异常。例如,在main()中,如果在退出之前作为最后手段记录what()字符串,那么捕获所有std::异常可能是一件好事。然而,在其他地方,这不太可能是个好主意。
|
13
0
创建子类异常的另一个原因是在处理大型封装系统时有更好的设计。您可以将其重新用于验证消息、用户查询、严重控制器错误等。您可以简单地在主源文件上“捕获”所有类似验证的消息,而不是重写或重新hook所有消息,而是在整个类集中的任何位置抛出错误。 e、 g.致命异常将终止程序,验证错误只会清除堆栈,用户查询将向最终用户提问。 这样做还意味着您可以在不同的接口上重用相同的类。e、 windows应用程序可以使用消息框,web服务将显示html,报告系统将记录它,等等。 |
14
0
使用
|
lfox · 如果列中不存在某个值,则停止代码执行 2 年前 |
zaen · 将值传递到异常字符串消息中 2 年前 |
Zephyr · 如何在双ListView选择系统上实现过滤器? 6 年前 |
Aave · 错误数组长度的特定异常 6 年前 |