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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.64
vetal20600
19 / 20 / 1
Регистрация: 19.04.2012
Сообщений: 181
#1

__try __except не работает - C++

14.11.2012, 23:59. Просмотров 1969. Ответов 10
Метки нет (Все метки)

Подскажите, пожалуйста, почему это не работает и как ловить другие исключения.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// l4.cpp : Defines the entry point for the console application.
//
 
#include <windows.h>
#include <stdio.h>
 
int main (int argc, LPCSTR argv []) {
    float a=0,y=3,b;
    __try {
        b=y/a;
 
    } 
    __except (EXCEPTION_FLT_DIVIDE_BY_ZERO)  {
        printf("Dilennia na 0!\n");
    }
    system("pause");
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
John Prick
764 / 697 / 126
Регистрация: 27.07.2012
Сообщений: 1,988
Завершенные тесты: 3
15.11.2012, 00:16     __try __except не работает #2
м.б. такая штука как у тебя и может работать, но я такого не встречал. Ловля исключений в С++ делается так:
C++
1
2
3
4
5
6
7
8
9
try {
// тут код, имеющий привычку сыпать исключения
} catch (EXCEPTION_FLT_DIVIDE_BY_ZERO)
{
// тут обработали деление на ноль
} catch (...)
{
// тут обработали всё остальные исключения
}
vetal20600
19 / 20 / 1
Регистрация: 19.04.2012
Сообщений: 181
15.11.2012, 00:37  [ТС]     __try __except не работает #3
John Prick, на c++ microsoft visual c++ 2008 express такое должно рабоать...
Но не работает((
John Prick
764 / 697 / 126
Регистрация: 27.07.2012
Сообщений: 1,988
Завершенные тесты: 3
15.11.2012, 00:51     __try __except не работает #4
vetal20600, а зачем именно так писать? в чём выгода по сравнению с обычным try catch?
vetal20600
19 / 20 / 1
Регистрация: 19.04.2012
Сообщений: 181
15.11.2012, 00:52  [ТС]     __try __except не работает #5
Цитата Сообщение от John Prick Посмотреть сообщение
vetal20600, а зачем именно так писать? в чём выгода по сравнению с обычным try catch?
Потому что от меня требуют так сделать))
Croessmah
Модератор
Эксперт CЭксперт С++
12877 / 7263 / 810
Регистрация: 27.09.2012
Сообщений: 17,940
Записей в блоге: 2
Завершенные тесты: 1
15.11.2012, 01:46     __try __except не работает #6
ОБРАБОТКА ИСКЛЮЧЕНИЙ В VISUAL C++
Kastaneda
Форумчанин
Эксперт С++
4468 / 2830 / 224
Регистрация: 12.12.2009
Сообщений: 7,199
Записей в блоге: 1
Завершенные тесты: 1
15.11.2012, 09:52     __try __except не работает #7
Цитата Сообщение от John Prick Посмотреть сообщение
м.б. такая штука как у тебя и может работать, но я такого не встречал. Ловля исключений в С++ делается так:
Цитата Сообщение от John Prick Посмотреть сообщение
а зачем именно так писать? в чём выгода по сравнению с обычным try catch?
Нет, не ошибка. Да, в С++ такого нет, это называется SEH (Structured Exception Handling). Под виндой можно делать так
C++
1
2
3
4
5
6
7
8
     _try
     {
         // some code 
     }
     _except( EXCEPTION_EXECUTE_HANDLER )
     {
         printf( " Caught the exception\n" );
     }
vetal20600, похоже ты просто что-то не так собрал, код рабочий.
Croessmah
Модератор
Эксперт CЭксперт С++
12877 / 7263 / 810
Регистрация: 27.09.2012
Сообщений: 17,940
Записей в блоге: 2
Завершенные тесты: 1
16.11.2012, 13:39     __try __except не работает #8
Цитата Сообщение от Kastaneda Посмотреть сообщение
vetal20600, похоже ты просто что-то не так собрал, код рабочий.
Попробовал ради интереса на 12-ой студии. Так то все нормально, но значение, возвращаемое функцией
C++
1
GetExeptionCode()
не совпадает со значением
C++
1
EXCEPTION_FLT_DIVIDE_BY_ZERO
vetal20600
19 / 20 / 1
Регистрация: 19.04.2012
Сообщений: 181
16.11.2012, 14:09  [ТС]     __try __except не работает #9
Всем спасибо.
Уже сам разобрался, что было не так...
silent_1991
Эксперт С++
4956 / 3032 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
21.11.2012, 13:49     __try __except не работает #10
Цитата Сообщение от vetal20600 Посмотреть сообщение
Уже сам разобрался, что было не так...
Разобрались - поведайте об этом. Решение проблемы может быть интересно другим пользователям форума.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.11.2012, 21:51     __try __except не работает
Еще ссылки по теме:

C++ Программа при релизе не работает, а при дебаге работает
Работает в онлайн компиляторах, но не работает у меня C++
C++ Почему тип "bool" работает в файле с расширением .cpp и не работает в файле с расширением .c?
C++ Не работает кириллица. Или работает, но illegale bute sequence

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

Или воспользуйтесь поиском по форуму:
vetal20600
19 / 20 / 1
Регистрация: 19.04.2012
Сообщений: 181
29.11.2012, 21:51  [ТС]     __try __except не работает #11
Надо было сделать так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// l4.cpp : Defines the entry point for the console application.
//
 
#include <windows.h>
#include <stdio.h>
 
int main (int argc, LPCSTR argv []) {
    dword pmm;
    int a=0,y=3,b;
    __try {
        b=y/a;
 
    } 
    __except (exception_execute_handler)  {
    pmm=GetExceptionCode();
    if (pmm==EXCEPTION_INT_DIVIDE_BY_ZERO) {
            printf("Divide by 0!!!\n");
        }
        
    }
    system("pause");
    return 0;
}
Yandex
Объявления
29.11.2012, 21:51     __try __except не работает
Ответ Создать тему
Опции темы

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