Я пытался создать программу на C ++, которая может перехватывать и обрабатывать исключение bad_alloc.
Во время написания кода я не заметил никаких ошибок, но когда я попытался скомпилировать этот код, я получил код ошибки C2276и C3876 в Microsoft Visual Studio Community 2017.
Кажется, что сама ошибка появляется в блоке catch {...} кода.
#include "pch.h"
#include <iostream>
#include <string>
using namespace std;
class CanGoWrong {
public:
CanGoWrong() {
char *pMemory = new char[9999999999];
delete[] pMemory;
}
};
int main()
{
try {
CanGoWrong wrong;
}
catch(std::bad_alloc &e){
cout << "Caught exception: "<< e.what << e << endl;
}
cout << "Still running" << endl;
return 0;
}
Ошибка с кодом C3867 («нестандартный синтаксис, использование &»). Я исправил это так:
с
cout << "Caught exception: "<< e.what << e << endl;
до:
cout << "Caught exception: "<< &e.what << e << endl;
Тем не менее, ошибка C2276 не исчезнет. Я думаю, что есть что-то сделать, используя базовый класс std :: exception.
Я хочу понять, как это сделать правильно, этот код является примером курса, которому я должен следовать и понимать.