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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.64
vetal20600
19 / 20 / 1
Регистрация: 19.04.2012
Сообщений: 181
14.11.2012, 23:59     __try __except не работает #1
Подскажите, пожалуйста, почему это не работает и как ловить другие исключения.
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
754 / 687 / 123
Регистрация: 27.07.2012
Сообщений: 1,974
Завершенные тесты: 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
754 / 687 / 123
Регистрация: 27.07.2012
Сообщений: 1,974
Завершенные тесты: 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
Модератор
Эксперт С++
 Аватар для Croessmah
11841 / 6820 / 771
Регистрация: 27.09.2012
Сообщений: 16,911
Записей в блоге: 2
Завершенные тесты: 1
15.11.2012, 01:46     __try __except не работает #6
ОБРАБОТКА ИСКЛЮЧЕНИЙ В VISUAL C++
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4237 / 2770 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 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
Модератор
Эксперт С++
 Аватар для Croessmah
11841 / 6820 / 771
Регистрация: 27.09.2012
Сообщений: 16,911
Записей в блоге: 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
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 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++ setprecision() не работает, или работает не так как нужно
Почему программа не работает на MFC статичной библиотеки. а вот на стандартном мфс работает C++
Multimap STL - работает только запись в файл, поиск в файле не работает C++

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

Или воспользуйтесь поиском по форуму:
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 не работает
Ответ Создать тему
Опции темы

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