我正在使用 Boost.Test 针对一些旧的 C 数学库编写单元测试。已知为某些指定输入引发整数除零系统异常的测试函数之一。假设这是期望的行为,我想为这种情况编写否定测试。
BOOST_REQUIRE_THROW(statement, exception);
对我不起作用,因为它不是 C++ 样式异常(此宏在try {} catch {}
内部使用)。
当我预计系统级别出现故障时,处理案例的正确方法是什么?
我正在使用 Boost.Test 针对一些旧的 C 数学库编写单元测试。已知为某些指定输入引发整数除零系统异常的测试函数之一。假设这是期望的行为,我想为这种情况编写否定测试。
BOOST_REQUIRE_THROW(statement, exception);
对我不起作用,因为它不是 C++ 样式异常(此宏在try {} catch {}
内部使用)。
当我预计系统级别出现故障时,处理案例的正确方法是什么?
由于它是 Windows,我建议查看_set_se_translator() Windows API。它允许使用 C++ 处理结构化异常catch
。
还有其他可能的方法,例如安装您的处理程序,但这种方法允许统一的异常处理,就好像它们是 C++ 异常一样,只需最少的编程工作。