c++

您所在的位置:网站首页 网页空指针错误 c++

c++

2024-07-14 00:49| 来源: 网络整理| 查看: 265

简短的回答 - 你不能以便携或标准的方式,因为像这样的错误可能会破坏进程本身。

长答案-您可以做的比您想象的要多,而且绝对比程序崩溃的默认值要多。但是,您需要记住 3 件事: 1)这些错误比异常更严重,并且通常不能作为逻辑异常出现。 2)您的检测和库处理将依赖于后端的平台,即使您可以提供一个干净的抽象接口供公众使用。 3)总会有一些非常糟糕的崩溃,你甚至无法在结束之前检测到它们。

基本上,像段错误或堆损坏这样的错误不是例外,因为它们正在破坏运行程序的实际进程。您编写到程序中的任何内容都是程序的一部分,包括异常处理,因此在进程终止之前记录一个很好的错误消息之外的任何事情在少数情况下都是不可取的,这并非不可能。在 POSIX 中,操作系统使用信号系统来报告此类故障,您可以注册回调函数以在退出之前记录错误内容。在 Windows 中,操作系统有时可以将它们转换为外观正常的异常,您可以捕获并从中恢复。

然而,最终,您最好的选择是针对此类噩梦进行防御性编码。在任何给定的操作系统上,都会有一些非常糟糕,以至于您无法检测到它们,即使在原则上,在您的进程死亡之前也是如此。例如,破坏您自己的堆栈指针会使您崩溃,甚至您的 POSIX 信号回调也看不到它。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3