Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
c0der
1 / 1 / 1
Регистрация: 03.08.2010
Сообщений: 41
#1

Обработка исключений - C++

04.10.2010, 01:10. Просмотров 613. Ответов 6
Метки нет (Все метки)

Почему не перехватывает ошибку и не выводит Error? а прога сама прекращает работу.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
using namespace std;
 
void www()
{
    int a=10,b=2,c=0;
    try
    {
        cout << a/2 << endl;
        cout << a/c << endl;
    }
    catch(...)
    {
        cout << "ERROR" << endl;
    }
}
 
int main()
{
     www();
system("pause");
return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.10.2010, 01:10     Обработка исключений
Посмотрите здесь:

Обработка исключений - C++
Доброго времени суток. Использую RAD XE 4. Пытаюсь поймать исключения путем catch(Exeption &amp;E) { } Но компилятор...

Обработка исключений - C++
Нужно описать класс исключения и программу, способную генерировать и обрабатывать исключение (должна содержать блоки try, catch, throw)....

Обработка исключений - C++
Как сделать обработку исключения так, чтобы, если, например, вводим количество координат больше, чем можно, программа предлагала, или...

Обработка исключений - C++
Здравствуйте! Есть вот такое выражение: Подскажите пожалуйста, как правильно реализовать обработку исключений. И у меня не...

Обработка исключений - C++
Уважаемые админы. Знаю, что о помощи надо просить, когда имеются хоть какие-то наработки. К сожалению, тему исключений мало разбирала. А...

Обработка исключений - C++
Объясните мне толком для чего используются эти обработки исключений (Try, catch, throw). Сколько не читаю, не могу понять для чего и как...

Обработка исключений - C++
Программа должна содержать блоки try, catch, точку throw. Задание: Ввод пользователем отрицательного возраста.

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alex_x_x
бжни
2447 / 1652 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
04.10.2010, 01:12     Обработка исключений #2
наверняка не скажу, но деление на ноль генерирует процессорное прерывание, не отлавливаемое плюсатым обработчиком
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 320
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
04.10.2010, 01:30     Обработка исключений #3
А еще если учесть что throw нету... Чтобы ловило - допустим так.
Нет. Не прав.
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
#include <iostream>
#include <stdexcept>
using namespace std;
 
void www()
{
        int a=10,b=2,c=0;
        try
        {
                cout << a/2 << endl;
                cout << a/c << endl;
        }
        catch(std::runtime_error& e)
        {
                cout << "ERROR" << endl;
        }
}
 
int main()
{
         www();
system("pause");
return 0;
}
Добавлено через 17 минут
Мм. Да. Судя по всему не поймать. Ни set_terminate, ни set_unexpected не помогают.

Но вот так ловить никто не мешает:

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
#include <iostream>
#include <stdexcept>
using namespace std;
 
void www()
{
        int a=10,b=2, c=0;
        cin>>c;
        try
        {
            cout << a/2 << endl;
            if(c==0)
                throw(std::logic_error("Error!"));
            int t=a/c;
        }
        catch(const std::logic_error& e)
        {
            cout<<e.what()<<'\n';
        }
}
 
int main()
{
    www();
    system("pause");
    return 0;
}
NightmareZ
1339 / 562 / 37
Регистрация: 31.03.2009
Сообщений: 1,918
04.10.2010, 01:35     Обработка исключений #4
Цитата Сообщение от c0der Посмотреть сообщение
Почему не перехватывает ошибку и не выводит Error? а прога сама прекращает работу.
Потому что. Используй SEH, если так сильно нужно.
alex_x_x
бжни
2447 / 1652 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
04.10.2010, 15:29     Обработка исключений #5
ну SEH отдельная тема, отдельная от плюсатых исключений
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 320
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
04.10.2010, 15:56     Обработка исключений #6
alex_x_x, Ну комбинировать-то можно. Только не так очевидно, как с исклами С++
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.10.2010, 16:43     Обработка исключений
Еще ссылки по теме:

Обработка исключений - C++
Помогите написать программу пожалуйста!!!! Я незнаю как правильно написать!!! Задание: Для каждого варианта необходимо создать три...

Обработка исключений - C++
Подскажите пожалуйста как продолжить выполнение программы после срабатывания оператора catch. catch завершает программу, но ее нужно...

обработка исключений - C++
Здравствуйте. В следующем коде, при запуске throw выдает ошибку &quot;Exception object adress&quot;. Не понимаю почему. Подскажите пожалуйста. ...

Обработка исключений - C++
Есть вопрос по заданию. С клавиатуры вводится номер ошибочной ситуации. В зависимости от того, какой номер введен, сгенерировать...

Обработка исключений - C++
Как в блоке Try...Catch... обработать необработанное исключение по адресу? Что необходимо использовать в параметрах catch?


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

Или воспользуйтесь поиском по форуму:
alex_x_x
бжни
2447 / 1652 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
04.10.2010, 16:43     Обработка исключений #7
как раз не рекомендуется, ибо в винде исключения с++ работают через SEH, если использовать и то и то, то плюсатые исключения могут SEH'ом ловиться
Yandex
Объявления
04.10.2010, 16:43     Обработка исключений
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru