有没有一个普遍接受的成语,指示C代码可以抛出异常?

前端之家收集整理的这篇文章主要介绍了有没有一个普遍接受的成语,指示C代码可以抛出异常?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
使用C代码时,遇到问题,意外的是调用者抛出异常.读取您正在使用的模块的每一行,看看它是否抛出异常并不总是可行或不切实际的,如果是,则是什么类型的异常.

是否存在处理这个问题的惯用语或“最佳做法”?

我想到了以下几点:

(1)在我们的doxygen文档中,我们可以在预期抛出异常的每个函数添加一个注释,它的类型是.
简单:简单.
Minuses:取决于用户错误.

(2)为了安全起见,我们可以有一个app-wide try / catch(…)
Pluses:我们不会有任何未被捕获的例外.
罚款:这个例外是远离投篮.很难弄清楚做什么或出了什么问题.

(3)使用异常规格
Pluses:这是处理这个问题的语言认可方式.
Minuses:需要重新构建问题库才能有效.在编译时不执行,所以违规行为会变成运行时问题,这是我想避免的!

这些方法的任何经验,还是我不知道的任何其他方法

解决方法

解决问题的惯用方式不是表示您的代码可以抛出异常,而是在对象中实现异常安全.该标准定义了对象应实现的几个异常保护:

>抛出保证:该函数不会抛出异常
>强异常安全保证:如果抛出异常,对象将处于初始状态.
>基本异常安全保证:如果抛出异常,该对象将处于有效状态.

当然,这个标准文件也是每个标准库类的异常安全级别.

这是处理C中异常的方法.而不是标记哪个代码可以或不能抛出异常,使用RAII来确保您的对象被清理,并考虑在RAII对象中实现适当级别的异常安全性,以便在没有特殊处理的情况下能够生存抛出异常.

如果异常允许您的对象处于无效状态,则异常只会造成问题.这绝对不会发生.您的对象应始终至少实现基本保证. (并实施提供适当级别的异常安全的容器类是启发性的C练习))

对于文档,当你能够确定一个函数可能抛出的异常时,一切都可以自由地记录它.但一般来说,当没有指定任何其他内容时,假设函数可能会抛出.有时候,空掷指定有时用于记录函数从不抛出的时间.如果不在那里,假设该函数可能会抛出.

猜你在找的C&C++相关文章