


Из-за чего возникает необработанное исключение и как его исправить? Программа в C++
Текст проги
#pragma once
#include "Machine.h"
#include "Const.h"
#include
#include
#include
using namespace std;
const size_t ARRAY_SIZE = 6;
class Initializer
{
private:
unsigned int argc;
const char** argv;
vector *commandFile;
size_t start_str;
size_t start_pos;
void findStartProgramm() {
for (start_str = 0; start_str < commandFile->size(); ++start_str)
{
for (start_pos = 0; start_pos < (*commandFile)[start_str].size(); ++start_pos)
{
if ((*commandFile)[start_str][start_pos] == Symbol::startProgramm) {
return;
}
}
}
throw exception("Начало файла не найдено");
} ТУТ ОШИБКА "ИСКЛЮЧЕНИЕ НЕ ОБРАБОТАНО"
void fillVector() {
const char* file = argv[1];
if (file == nullptr) {
throw("undef_arg");
}
ifstream inputFile(file);
string temp;
while (getline(inputFile, temp)) {
commandFile->push_back(temp);
}
}
public:
Initializer(const int argc, const char* argv[]) {
this->argc = argc - 1;
this->argv = argv;
commandFile = new vector();
}
Machine* init() {
fillVector();
findStartProgramm();
Machine* machine = new Machine(commandFile, start_str, start_pos);
return machine;
}
};
очевидно, программа доходит до строчки с throw, бросает исключение, а выше по стеку нет никаких try..catch, и исключение вылетает из main
в первую очередь тебе нужно понять, почему выполнение вообще доходит до исключения и может ли программа продолжать работу, если оно бросается
ты с джавы или чего-то похожего на плюсы перешёл?
у тебя весь код в утечках, ты ни один new не освобождаешь
не используй сырые указатели, если не умеешь ими пользоваться
Сочувствую компилятору. Конечно исключение не обработано, если его не обрабатывать :-)
В чем глубокий смысл возвращать результат функции void findStartProgramm() через исключение? Может проще сделать её bool? Я бы вообще int сделал, чтобы возвращать позицию или -1, если не найдено.
Оформи код нормально, тогда и можно будет понять, что у тебя не так.