当前位置:  开发笔记 > 编程语言 > 正文

是否有可能从std :: abort恢复?

如何解决《是否有可能从std::abort恢复?》经验,为你挑选了1个好方法。

我们的C代码库使用assert来检查是否满足前置条件/​​后置条件.

#include 
#include 

void Aborting_Function(int n);

int main(){

    Aborting_Function(1); //good
    Aborting_Function(0); //calls std::abort()

    //Is it possible to recover somehow?
    //And continue on...
}

void Aborting_Function(int n){
    assert(n > 0);
    //impl...
}

在单元测试中,我想验证函数是否正确遵循它们的合同
(在它们应该的时候中止).

是否有可能从std :: abort恢复?

我意识到单元测试检查断言应该检查完全相同的东西似乎有些重复,但这会有所帮助,因为我们可以自动检查不应该工作的特定用例.



1> Richard Hodg..:

简短的回答,"不".

您可能需要考虑使用Google测试框架,而不是颠覆abort().

这有DEATH_TEST(文档:https://github.com/google/googletest/blob/master/googletest/docs/V1_7_AdvancedGuide.md)

基本上它的作用是fork一个子进程并检查该语句是否导致它退出(如果它中止它将会这样做).

推荐阅读
郑谊099_448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有