1
8
整天为这些服务编码我理解你的问题。尽管我们的代码中确实存在异常,但我们不会将它们返回到调用它的外部库,而是有一个简单的“tribool”。
我必须说
C++在这里带来了很多RAI,因为它笑了多个返回路径,并保证了它所持有的对象的确定性释放。
然后你可以这样使用它们:
如前所述,真正令人不快的是构造函数。在这种情况下,你不可能有“正常”的构造函数。
看起来很像指针,只是它是堆栈分配的,因此开销几乎为零。 |
2
6
无论是抛出还是返回,仍然使用C++确定性析构函数来释放资源。
|
3
5
简单的回答是 不 对 :). 您可以使所有函数返回错误代码(类似于Microsoft COM平台的实现)。
而不是:
您有:
此外,所有函数的实现都必须执行相同的操作:用一个
在上面的示例中,还必须确定每次迭代的rv值是否构成当前函数的错误,并(最终)直接从
简而言之,除了在代码和模板中可能使用RAII(你是否允许使用它们),你最终接近“C代码,使用C++编译器”。
这是一个很好的案例,可以向贵公司负责编码标准的人员介绍:( 编辑 |
4
4
仅仅因为在您当前的编码标准中禁止使用异常,这并不意味着您应该在将来遇到类似这样的问题时立即消除它们。在这种情况下,您当前的编码标准可能没有设想出现这种情况。如果他们这样做了,他们可能会给你提供帮助,让你知道替代的实现方式是什么。
|
5
4
像那样的编码标准简直是胡说八道。
|
6
0
如果在windows下运行,可以使用SEH异常。它们还具有堆栈前展开处理程序的优点,可以停止展开(异常\继续\执行)。 |
7
0
在我脑子里,你也许能用信号实现类似的效果。
可能还有更多的事情要做,因为我还没有想清楚。 希望这有帮助。 |
8
0
你会调用任何可能引发异常的库吗?如果是这样的话,你还是需要试一试。对于内部错误,每个方法都需要返回一个错误代码(使用
|
9
0
另一种方法是,不抛出异常,而是设置一个全局错误指示符,并返回合法但任意的输入。然后在每个循环迭代中检查是否设置了全局错误指示符,如果设置了则返回。
例如
|
rookie · 检查函数模板的所有参数包参数是否属于int 1 年前 |
ivaigult · -W转换和隐式字符串到布尔类型转换 1 年前 |
rainer · 后台插入程序的初始化 1 年前 |
Community wiki · 以理智、安全和高效的方式复制文件 1 年前 |
Shefali Kanaujia · 对C中向量的向量进行排序++ 1 年前 |
Ma Joonyoung · 粗粒度和细粒度链表的时间比较 1 年前 |