”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 我们应该在 C++ 函数原型中使用异常说明符吗?

我们应该在 C++ 函数原型中使用异常说明符吗?

发布于2024-11-08
浏览:843

Should We Use Exception Specifiers in C   Function Prototypes?

C 中的异常:我们应该在函数原型中指定它们吗?

在 C 中,异常说明符允许函数声明它们是否可以抛出异常。然而,由于对其有效性和后果的担忧,它们的使用受到了质疑。

反对使用异常说明符的原因:

  • 执行不力: 编译器并不严格强制执行异常说明符,因此违反它们可能不会导致错误。这会破坏它们的可靠性。
  • 程序终止:违反异常说明符通常会触发程序终止,这在大多数情况下是不利的结果。
  • 标准非-合规性: 某些编译器,例如 VS.Net,将 throw(X) 视为 throw(...),这违反了标准,可能导致不可靠的行为。

避免异常说明符的原因:

  • 在模板中难以实现:异常说明符阻碍模板代码,因为预测可能出现的所有可能的异常具有挑战性。
  • 防止扩展性: 指定特定异常可以限制函数行为的未来演变,因为它对现有代码有潜在影响。
  • 遗留代码中的不确定性:与可能引发意外异常的外部库交互可能会导致难以正确处理错误并确保程序的稳定性。

异常说明符的替代方案:

通常建议不要使用异常说明符:

  • 返回指示状态或特定条件的错误代码或对象。
  • 捕获异常并以受控方式处理它们。
  • 依靠 try-catch 块来显式捕获和处理异常情况。

总之,虽然异常说明符提供了一种机制来传达异常的可能性,但它们的局限性和潜在的负面后果使得它们不太适合一般用途。通过采用错误处理的替代策略,开发人员可以增强代码的稳健性和可维护性。

最新教程 更多>

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3