exception(msg) { //передача данных в конструктор базового класса
}
};
void foo(int value) {
if (value == 0) {
throw exception("Number is 0");
}
if (value == 1) {
throw MyException("Error");
}
cout << "Variable = " << value << endl;
}
А почему здесь я не могу передать сообщение в свой класс exception? Извините за тупые вопросы, я просто смотрю туториал, который выходил 3 года назад, и наверное ,там что-то уже поменялось
Потому что в конструкторе надо тогда принимать const char* И в этом плане изменений не было точно. Отбрасывания константности у литералов в С++ нет
у exception вообще нет такого конструктора, это всё происки мсвц
+. Никто не гарантирует что подобные решения будут работать ещё где-то кроме.
А ещё лучше посмотреть на уже существующие исключения, и к примеру для number is 0 кидать std::invalid_argument
class MyExc: public std::runtime_error { using std::runtime_error::runtime_error; }; int main() { throw MyExc{"321"}; }
Беру слова назад, всё можно.
https://en.cppreference.com/w/cpp/error/exception/exception
Обсуждают сегодня