Проблема. Я использую как std:: exception, так и std:: bad_alloc для исключения исключений. Что-то не так с порядком улова try, который я использую. Я приложил пример кода для справки.
Ожидаемый. Если моя ошибка bad_alloc, то генерируется исключение bad_alloc.
Соблюдается. Моя ошибка bad_alloc, но выбрано исключение.
Пример кода:
#include "stdafx.h"
#include <iostream>
#include <exception>
using namespace std;
void goesWrong()
{
bool error1Detected = true;
bool error2Detected = false;
if (error1Detected)
{
throw bad_alloc();
}
if (error2Detected)
{
throw exception();
}
}
int main()
{
try
{
goesWrong();
}
catch (exception &e)
{
cout << "Catching exception: " << e.what() << endl;
}
catch (bad_alloc &e)
{
cout << "Catching bad_alloc: " << e.what() << endl;
}
return 0;
}