gpt4 book ai didi

c++ - 忽略 C++ 的 Visual Studio 异常设置

转载 作者:行者123 更新时间:2023-11-28 01:39:45 26 4
gpt4 key购买 nike

我正在 Visual Studio 2017 中测试 C++ 中的断言方法,并且如我所料得到断言异常。但是在关闭所有(!)异常设置后,我仍然会在我的 catch block 处理它之前抛出异常(请参见下面的示例)。

try {
assert(validate(1363821) == false);
assert(validate(3848238) == true);
printf("Validation correctly implemented.");
} catch ( exception & e ){
const string error = e.what();
printf("Validation failed!");
}

所以我的问题是:

  • 我是不是做错了什么?
  • 或者 assert 方法是否会抛出某种 catch block 无法处理的异常,并且总是会产生致命异常?如果是这样,如何在不产生 fatal error 的情况下实现断言方法?

我的异常设置没有设置如下图: enter image description here

非常感谢任何帮助!

最佳答案

断言失败不应抛出任何异常。相反,它执行一些特定于实现的报告操作(例如将错误消息打印到 stderr 或显示该对话框),然后调用 std::abort。因此,IDE 中的 catch block 和/或异常处理设置在这种情况下不会执行任何操作。如果您希望断言抛出异常,那么您需要编写自己的 assert 宏替换。

如果您正在寻找某种验证检查,那么您最好使用一些专用框架,例如 boost::test。然后你可以简单地写:

 BOOST_AUTO_TEST_CASE(Doc_Parse_Empty)
{
BOOST_TEST(validate(1363821) == false);
BOOST_TEST(validate(3848238) == true);
}

它还将自动处理成功/失败报告并无缝集成到 VS 中。

关于c++ - 忽略 C++ 的 Visual Studio 异常设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47737666/

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