c – 抛出(或相应地)NULL函数参数而不是让它全部爆炸?

前端之家收集整理的这篇文章主要介绍了c – 抛出(或相应地)NULL函数参数而不是让它全部爆炸?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在之前需要高健壮性和长启动时间的大规模应用程序中,我一直在验证指针函数参数,当它被记录为“绝不能为NULL”时.如果参数在C中实际为NULL并在C中返回错误代码,那么我会抛出一个std :: invalid_argument异常或类似的异常.

但是,我开始认为也许最好让应用程序立即在同一个函数中的第一个NULL指针取消引用中爆炸 – 然后崩溃转储文件将揭示发生了什么 – 并让一个彻底的测试过程发现坏的函数调用.

不检查NULL并让应用程序爆炸的一个问题是,如果指针实际上没有在该函数中解除引用,而是存储以供以后使用,那么解除引用爆炸将脱离上下文并且更难以诊断.

有关于此的任何想法或最佳做法?

编辑1:我忘了提到我们的许多代码都是第三方开发人员的库,可能会或可能不知道我们的内部错误处理策略.但功能仍然正确记录!

解决方法

这是一个简单的电话.当没有预期时获得NULL指针是程序中的错误或程序状态严重受损的明显迹象.其中任何一个都需要程序员对它做些什么.抛出异常只会在没有被捕获时才能正常运行.如果它被捕获,你会丢失非常重要的诊断信息,它会抛弃所有重要的调用堆栈,帮助您了解它是如何进入该状态的.如果没有捕获,那么C异常和硬件异常之间没有明显的区别.

异常可能在某处被捕获的风险要求您不要抛出异常并让它死掉.

对于在捕获异常后可以生成调用堆栈的运行时环境,这种考虑是非常不同的.在托管环境中很常见,而不是在本机C/C++中.

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