Я использую Visual Studio Native Unit Test Framework для C ++. Когда утверждение не выполняется, следующие операторы не выполняются и вызываются деструкторы локальных объектов, поэтому создается впечатление, что выдается исключение, но я не могу перехватить любое исключение C ++ по предложению catch (...)
. После некоторых экспериментов я заметил, что, например, вызов __int2c()
(который вызывает прерывание 2c из-за документации) имеет тот же эффект. К этому дню я знал только об исключениях, которые имеют такое поведение. Не могли бы вы дать мне подсказку о том, что может быть причиной в этом случае?
UPDATE:
Вот пример кода
void func()
{
struct Foo
{
~Foo()
{
// this code is executed
}
};
Foo foo;
try
{
Assert::IsTrue(false);
}
catch (...)
{
// this code is not executed
}
// this code is not executed
}