首页 / 知识
关于c ++:确保始终捕获异常
2023-04-11 14:35:00

Ensuring that Exceptions are always caught调用函数不必捕获C ++中的异常(没有编译时错误)。 因此,由开发人员决定是否使用try / catch捕获它们(与Java不同)。 有没有一种方法可以确保调用函数始终使用try / catch捕获抛出的异常? 没有。 为何不查看例外规范的实用说明。 您可以"帮助"此方法的唯一方法是记录您的函数可能引发的异常,例如在声明它的头文件中作为注释。这不是由编译器或其他任何东西强制执行的。为此,请使用代码审查。 您不应该在这里使用异常。如果您在使用此功能的任何地方都需要期待它,这显然不是例外情况! 更好的解决方案是使函数返回类似这样的实例。在调试版本中(假设开发人员使用他们刚刚编写的代码路径),如果他们忘记检查操作是否成功,则会得到一个断言。
在您的问题范围之外,因此我争辩不发布此内容,但在Java中实际上有两种类型的异常,已检查和未检查。基本区别在于,就像 作为参考,试试这个 克里斯(Chris)可能对这个问题有最好的答案: 但是,我很好奇这个问题的根源。如果用户始终将调用包装在try / catch块中,那么用户调用的函数是否真的应该首先抛出异常? 没有有关代码库的更多上下文,这是一个很难回答的问题。从臀部射击,我认为最好的答案是包装功能,以使推荐的(如果不是唯一的话,取决于代码的整体异常样式)公共接口为用户进行尝试/捕获。如果您只是想确保代码中没有未处理的异常,则单元测试和代码检查可能是最好的解决方案。 曾经试图将动态异常规范添加到函数的签名中,但是由于该语言无法提高其准确性,因此后来对其进行了折旧。
在C ++ 11及更高版本中,我们现在有了noexcept说明符。 根据上下文,可以通过将异常代码编码到类型系统中来确保处理异常行为。 请参阅:std :: optional作为库基础知识的一部分。
我觉得很有趣,Java人群(包括我自己)正试图避免检查异常。他们正在尝试使用RuntimeExceptions来强制捕获异常。 或者,您可以开始引发严重异常。当然,访问冲突异常将引起用户的注意。 |
最新内容
相关内容
python调用函数和打印函数的区别
python调用函数和打印函数的区别,培训,函数,区别,变量,实例,分配,以上,参数,东西,更多,python调用函数和打印函数的区别1、当你调用一个返回关于用户界面:图标:没有设计技能的开
关于用户界面:图标:没有设计技能的开发人员如何使他/她的应用程序图标看起来漂亮?,关于用户界面:图标:没有设计技能的开发人员如何使他/标签中填写 onclick 事件调用函数
标签中填写 onclick 事件调用函数,标签,中,填写,onclick,事件,调用,函数,在,标签,, 在标签中填写onclick事件调用函数时,不是onclic如何确保以编程方式发送的电子邮件
如何确保以编程方式发送的电子邮件不会自动标记为垃圾邮件?,如何确保以编程方式发送的电子邮件不会自动标记为垃圾邮件?,权限,我一直,开发人员需要牢记的HTML 5安全问题
开发人员需要牢记的HTML 5安全问题,开发,人员,需要,牢,记的,HTML,安全,问题,,应用程序安全专家表示,HTML5给开发人员带来了新的安全