Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.79/34: Рейтинг темы: голосов - 34, средняя оценка - 4.79
0 / 0 / 0
Регистрация: 31.01.2016
Сообщений: 24

Функция для runtime_error

04.03.2016, 23:02. Показов 7069. Ответов 4

Студворк — интернет-сервис помощи студентам
Всем привет.

У меня не большая проблема , хочу написать функцию для исключений с помощью runtime_error.
Вместо того чтобы поймать исключение и вывести на консоль моё сообщение об ошибке , я получаю ошибку от системы(
Посмотрите код , подскажите что не так , заранее благодарен.

Пишу на vs 2015

Вот код:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
void error(string s)
{
    throw runtime_error(s);
}
 
 
// -----------------------------------------------------------
 
 
double f()
{
    double x = 0;
    cin >> x;
    if (!cin) throw error;
 
    return x;
}
 
 
// -----------------------------------------------------------
 
 
int main()
{
    try {
        f();
    }
    catch (runtime_error& e) {
        cout << "error! type mismatch" << e.what() << '\n';
    }
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
04.03.2016, 23:02
Ответы с готовыми решениями:

Ошибка функции runtime_error
Подскажите, пожалуйста, в чем дело. Она должна работать, но не хочет. Прикладываю весь код и скриншот, он весь рабочий и вообще из...

Обработка исключений runtime_error
Начал древнюю книгу Джесса Либерти и столкнулся с первой проблемой... Ну и ошибка заключается в том, что при некорректном вводе...

С3861 Runtime_error: идентификатор не найден
помогите исправить пожалуйста #include &lt;stdio.h&gt; #include &lt;Windows.h&gt; #include &lt;map&gt; #include &lt;assert.h&gt; using...

4
52 / 52 / 24
Регистрация: 24.12.2011
Сообщений: 133
04.03.2016, 23:16
C++
1
void error(string s)
C++
1
if (!cin) throw error;
Могу ошибаться, но по-моему throw работает не так, он кидает экземпляр класса, а не функцию.
0
0 / 0 / 0
Регистрация: 31.01.2016
Сообщений: 24
04.03.2016, 23:45  [ТС]
Спасибо за ответ я разобрался в чём дело.

Итого убил 2 дня)

вот код

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
string error(string s) // тут исправил тип
{
    throw runtime_error(s);
}
 
 
// -----------------------------------------------------------
 
 
double f()
{
    string ss = " "; // добавил
    double x = 0;
    cin >> x;
    if (!cin) throw error(ss); // поймал
 
    return x;
}
 
 
// -----------------------------------------------------------
 
 
int main()
{
    try {
        f();
        return 0;
    }
    catch (runtime_error& s) {
        cout << "e" << s.what() << '\n';
        return 1;
    }
    catch (...) {
        cout << "error\n";
        return 2;
    }
}
0
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,816
05.03.2016, 00:06
Цитата Сообщение от its space Посмотреть сообщение
я разобрался в чём дело.
Судя по всему - не совсем. Ибо остались проблемы.
В частности, код в 15 строке кидает в качестве исключения объект std::string, который возвращает функция error. Однако операции return в error нет. Это была бы ошибка, если бы в функции error не было собственного throw, который кидает уже объект std::runtime_error. Итого, throw в 15 строке бесполезен (и потенциально ошибкоопасен). Код следует изменить так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
void error(string const & s)
{
    throw runtime_error(s);
}
 
// -----------------------------------------------------------
 
double f()
{
    double x = 0;
    cin >> x;
    if (!cin) error("cin >> x");
 
    return x;
}
 
// -----------------------------------------------------------
  
int main()
{
    try {
        f();
        return 0;
    }
    catch (runtime_error const & s) {
        cout << "error: " << s.what() << '\n';
        return 1;
    }
    catch (...) {
        cout << "unknown error\n";
        return 2;
    }
}
1
0 / 0 / 0
Регистрация: 31.01.2016
Сообщений: 24
07.03.2016, 11:53  [ТС]
Да , вы правы. Большое спасибо за помощь.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.03.2016, 11:53
Помогаю со студенческими работами здесь

Как выкинуть окошко с исключением через std::runtime_error
Не понимаю, почему никакого окошка с красным крестиком и моей надписью не вылетает... #include &quot;stdafx.h&quot; #include...

Как в Qt из динамической библиотеки (DLL, SO .) выкинуть окошко с исключением и красным крестиком с надписью аля std::runtime_error ?
Возможно есть для этого специальный функционал в супер Qt, который мне за сегодняшний день так понравился? :victory:

Задача: "Слишком длинные слова" (RUNTIME_ERROR)
&quot;RUNTIME_ERROR&quot; при отправлении. В чем ошибка и как сделать правильно? Текст задачи: A. Слишком длинные слова ограничение по...

Доказать, что для класса всех булевых функция базисами являются функция Вебба и штрих Шеффера
Помогите пожалуйста с доказательством. Дальше дано задания :Выразить через них все функции полной системы {не, \/, /\}

Не правильно работает функция для заливки цветом, для Paint
Всем привет! Помогите пожалуйста с функцией заливки для паинт. Проблема такая, когда цвет заменяемого пикселя совпадает с цветом пикселя на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru