gpt4 book ai didi

c++ - 抛出(或相应地)NULL 函数参数还是让它全部爆炸?

转载 作者:可可西里 更新时间:2023-11-01 18:41:45 26 4
gpt4 key购买 nike

在以前需要高稳健性和长正常运行时间的大型应用程序中,我一直用于在记录为“绝不能为 NULL”时验证指针函数参数。然后我会抛出一个 std::invalid_argument 异常,或者类似的,如果参数在 C++ 中实际上是 NULL 并在 C 中返回一个错误代码。

但是,我开始认为也许最好让应用程序在同一个函数中的第一个 NULL 指针取消引用时立即崩溃 - 然后崩溃转储文件会揭示发生了什么 - 并让一个彻底的测试过程找到错误的函数调用。

检查 NULL 并让应用程序崩溃的一个问题是,如果指针实际上并未在该函数中取消引用,而是存储起来供以后使用,那么取消引用会失败- up 将脱离上下文并且更难诊断。

对此有什么想法或最佳实践吗?

编辑 1: 我忘了说,我们的大部分代码都是供第 3 方开发人员使用的库,他们可能了解也可能不知道我们的内部错误处理政策。但是函数仍然被正确记录!

最佳答案

我个人的偏好是记录函数不能接受 NULL 指针这一事实,并就此保留。请注意,虽然不能保证取消引用 NULL 指针会导致崩溃 - 如果您坚持进行诊断,则抛出异常是唯一可移植的解决方案。

话虽如此,我发现在我自己的代码中不需要的 NULL 指针非常非常少见。如果你有很多,它表明其他地方有问题,可能在代码的基本设计中。

关于c++ - 抛出(或相应地)NULL 函数参数还是让它全部爆炸?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3395023/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com