Выброс и перехват исключения [закрыт]

106
01 сентября 2021, 06:00
Закрыт. Этот вопрос не по теме. Ответы на него в данный момент не принимаются.

Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику Stack Overflow на русском.

Закрыт 1 год назад.

Улучшить вопрос

Возникает ошибка в функции в строчке где else. Кто может подсказать может я неправильно исключение выбрасываю?

    Abonent IEmployer::createAbonent()
{
    cout << "Input surname:";
    string surname;
    cin >> surname;
    cout << "Input name:";
    string name;
    cin >> name;
    cout << "Input midname:";
    string midname;
    cin >> midname;
    cout << "Input phone:";
    string phone;
    cin >> phone;
    cout << "Input year:";
    unsigned short int year;
    cin >> year;
    cout << "Input plane:";
    string plane;
    cin >> plane;
    Abonent abonent = Abonent::Abonent();
    try
    {
        if (abonent.setMidName(midname) != true && abonent.setSurname(surname) != true && abonent.setName(name) != true && abonent.setPhone(phone) != true && abonent.setPlane(plane) != true && abonent.setYear(year) != true)
            throw new exception("Error creating abonent. Try again");
        else
        {
            return abonent;
        }
    }
    catch (exception& ex)
    {
        showErrorMessage(ex.what());
    }
}
Answer 1

ошибка в функции в строчке где else

Не беспокойтесь, мы уже угадали, какая возникает ошибка.

Вы не даете исключению выйти из функции. Поэтому путь "исключение-перехват" не возвращает из функции никакого значения и не выбрасывает исключения. Компиляторы этого не любят.

...
try
{
    if (abonent.setMidName(midname) != true && abonent.setSurname(surname) != true && abonent.setName(name) != true && abonent.setPhone(phone) != true && abonent.setPlane(plane) != true && abonent.setYear(year) != true)
        throw new exception("Error creating abonent. Try again");
}
catch (exception& ex)
{
    showErrorMessage(ex.what());
}
return abonent;

или

if (abonent.setMidName(midname) != true && abonent.setSurname(surname) != true && abonent.setName(name) != true && abonent.setPhone(phone) != true && abonent.setPlane(plane) != true && abonent.setYear(year) != true)
    throw new exception("Error creating abonent. Try again");
return abonent;
READ ALSO
Анимация при скролле. Как создавать такие анимации?

Анимация при скролле. Как создавать такие анимации?

Мучает вопрос с анимацией(примеры ниже), никак не могу найти в интернете, может неправильно ищуМне никак не понятно каким образом всё это...

182
Запись и считывание XML файла

Запись и считывание XML файла

Подскажите, у меня есть форма с textbox'ами, как мне записать данные с них в XML файл, и потом считать данные с файла в один отдельный textbox строкой

108
С# Visual Studio Перенос папки из проекта в debug/release

С# Visual Studio Перенос папки из проекта в debug/release

Есть проект с исходным кодом, и папочка Extensions, (она не используется на этапе компиляции, а только после старта приложения) Как мне заставить...

201