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

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

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

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

14.11.2012, 23:59. Просмотров 2072. Ответов 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;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.11.2012, 23:59     __try __except не работает
Посмотрите здесь:

Блок __try - C++
Интересует как эта штука работает и как ею пользоваться, так как такая штука тоже якобы нужна в лабараторной по с++, я с такой раньше не...

Использование __try __finaly для освобождения памяти - C++
Здравствуйте. Подскажите, как возможно использовать конструкцию __try, __finaly для освобождения ресурсов в одном месте. Пример: ...

Через sublime text 3 и компилятор g++ работает, посоветовали скачать VS, не работает. Миниатюры - C++
через sublime text 3 и компилятор g++ работает, посоветовали скачать VS, не работает.

Multimap STL - работает только запись в файл, поиск в файле не работает - C++
И снова здравствуйте. Снова я прошу вашей помощи. Переделал программу с мапом в мульти мап, но что то пошло не так и работает только запись...

std::string код работает в VS 6.0, но не работает в VS2012 (error C4996) - C++
Как изменился синтаксис в Visual Studio 2012 данной строки? В VS 6.0 работает, в 2012 - нет. Кто подскажет, где можно взять список...

Не работает кириллица. Или работает, но illegale bute sequence - C++
В общем, столкнулся с такой проблемой. Есть консольное приложение. Не буду вдаваться в подробности, но мне понадобилось выводить русский...

Почему в динамическом массиве не работает то, что работает со статическим? - C++
Программа зависает #include&lt;iostream&gt; #include&lt;stdlib.h&gt; #include&lt;time.h&gt; using namespace std; int main() { ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
John Prick
774 / 707 / 129
Регистрация: 27.07.2012
Сообщений: 2,026
Завершенные тесты: 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
774 / 707 / 129
Регистрация: 27.07.2012
Сообщений: 2,026
Завершенные тесты: 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Эксперт С++
13063 / 7326 / 817
Регистрация: 27.09.2012
Сообщений: 18,085
Записей в блоге: 3
Завершенные тесты: 1
15.11.2012, 01:46     __try __except не работает #6
ОБРАБОТКА ИСКЛЮЧЕНИЙ В VISUAL C++
Kastaneda
Форумчанин
Эксперт С++
4514 / 2856 / 228
Регистрация: 12.12.2009
Сообщений: 7,250
Записей в блоге: 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Эксперт С++
13063 / 7326 / 817
Регистрация: 27.09.2012
Сообщений: 18,085
Записей в блоге: 3
Завершенные тесты: 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
Эксперт С++
4961 / 3037 / 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++
Опечатался. Не работает явное преобразования, а не явное работает. Есть класс( не обращайте внимание на члены данные класса ): class...

То работает, то не работает. Массив из случайных вещественных чисел - C++
Добрый день всем. Я пытался сделать следующее: создать массив из вещественных чисел. Ввести туда числа случайным образом. А потом вывести...

Программа работает в турбо си но не работает в дев си - C++
#include&lt;graphics.h&gt; #include&lt;stdio.h&gt; #include&lt;conio.h&gt; #include&lt;math.h&gt; #include&lt;dos.h&gt; #define R &quot;C:\\TC\\bgi&quot; void...

Код не работает в VC++ 6.0 но работает в MSVC++ 2010 - C++
Что делать как перевести, ведь как мне кажеться должно быть подобно. Проблемма например в заполнении структуры void...

Приложение работает в Win2K, не работает в Win2003 - C++
Может кто сталкивался - прога написанная на VC++ нормально работает в Win2K(Prof/Server), но &quot;вылетает&quot; в Win2003Server. Причем случиться...


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

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

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