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

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

Восстановить пароль Регистрация
 
 
MrWoolf
3 / 1 / 0
Регистрация: 29.11.2012
Сообщений: 60
10.09.2013, 15:47     Генерация и обработка исключений #1
Здравствуйте, помогите в написании программы, очень надо.

Задание: задан тип исключения, которое необходимо сгенерировать и обработать. Тип исключения соответствует типу, возвращаемому функцией DWORD GetExceptionCode(VOID).

Вот исключение:
EXCEPTION_STACK_OVERFLOW

Помогите пожалуйста, буду очень благодарен.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.09.2013, 15:47     Генерация и обработка исключений
Посмотрите здесь:

Обработка исключений C++
Обработка исключений C++
Обработка исключений с пмощью структурированной обработки исключений C++
Обработка исключений C++
Обработка исключений C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4236 / 2769 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
10.09.2013, 15:59     Генерация и обработка исключений #2
Сгенерировать EXCEPTION_STACK_OVERFLOW легко, достаточно написать рекурсию без выхода. А обработать средствами С++ нельзя, придется использовать WinAPI (или о какой ОС идет речь?).
В гугл "EXCEPTION_STACK_OVERFLOW handling"
MrWoolf
3 / 1 / 0
Регистрация: 29.11.2012
Сообщений: 60
10.09.2013, 16:42  [ТС]     Генерация и обработка исключений #3
Win XP

Добавлено через 14 минут
Kastaneda, примерно вот так??

C++
1
2
3
4
5
6
7
8
9
10
11
bool success = true;
 
__try {
    //...
} __except ((EXCEPTION_STACK_OVERFLOW == GetExceptionCode())
            ? EXCEPTION_EXECUTE_HANDLER
            : EXCEPTION_CONTINUE_SEARCH) {
    success = false;
    _resetstkoflw();
}
return success;
Добавлено через 1 минуту
Kastaneda, вот это сойдет под гинерацию
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
39
40
#include <stdlib.h>
#define W 1000
#define H 1000 
#define MAX 100000 
void initImg(int img[], float dtr[]) 
{ 
for(int i=0;i<W;i++) 
for(int j=0;j<H;j++) 
img[i*W+j]=255; 
 
for(int j=0;j<H;j++) 
{ 
img[j] = 0; 
img[W*(W-1)+j] = 0; 
} 
for(int i=0;i<W;i++) 
{ 
img[i*W] = 0; 
img[i*W+H-1] = 0; 
} 
for(int i=0;i<W;i++) 
for(int j=0;j<H;j++) 
{ 
if(img[i*W+j]==0) 
dtr[i*W+j] = 0; // <------here 
else 
dtr[i*W+j] = MAX; // <------here 
} 
} 
int main() 
{ 
int *image = (int*)malloc(4*W*H);   //Malloc the memory....(Allocated from Heap..)
float *dtr = (float*)malloc(4*W*H);
 
if(image && dtr) //If none of the ptr is NULL. Means memory is allocated...
{
initImg(image,dtr); 
}
return 0; 
}
MrWoolf
3 / 1 / 0
Регистрация: 29.11.2012
Сообщений: 60
11.09.2013, 17:31  [ТС]     Генерация и обработка исключений #4
Подскажите, что делать?? Буду очень благодарен.
MrWoolf
3 / 1 / 0
Регистрация: 29.11.2012
Сообщений: 60
14.09.2013, 23:28  [ТС]     Генерация и обработка исключений #5
Помогите пожалуйста кто-нибудь, подскажите хоть что-то.
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4236 / 2769 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
15.09.2013, 08:18     Генерация и обработка исключений #6
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
#include <iostream>
#include <Windows.h>
 
void func()
{
    int a[10000000] = {0};
    if (a[0] == 123) return; // обманываем компилятор, чтоб дал скомпилировать
    func();
}
 
int main()
{
    __try {
        func();
        std::cout << "After function calling" << std::endl;
    } __except ((EXCEPTION_STACK_OVERFLOW == GetExceptionCode())
            ? EXCEPTION_EXECUTE_HANDLER
            : EXCEPTION_CONTINUE_SEARCH) {
 
        _resetstkoflw();
        std::cout << "Stack Overflow" << std::endl;
    }
 
    return 0;
}
MrWoolf
3 / 1 / 0
Регистрация: 29.11.2012
Сообщений: 60
15.09.2013, 14:26  [ТС]     Генерация и обработка исключений #7
Есть проблема с идентификатором _resetstkoflw();

[C++ Error] Unit1.cpp(20): E2268 Call to undefined function '__resetstkoflw'

что делать?
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
15.09.2013, 14:30     Генерация и обработка исключений #8
Студия какая?
MrWoolf
3 / 1 / 0
Регистрация: 29.11.2012
Сообщений: 60
15.09.2013, 14:34  [ТС]     Генерация и обработка исключений #9
MS VS 12
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
15.09.2013, 14:53     Генерация и обработка исключений #10
Попробуйте это сдлать:
C++
1
#include <malloc.h>
MrWoolf
3 / 1 / 0
Регистрация: 29.11.2012
Сообщений: 60
15.09.2013, 14:55  [ТС]     Генерация и обработка исключений #11
Генерация и обработка исключений
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
15.09.2013, 15:13     Генерация и обработка исключений #12
У меня 10, поэтому трудно что-либо сказать. Проект какой?
MrWoolf
3 / 1 / 0
Регистрация: 29.11.2012
Сообщений: 60
15.09.2013, 15:53  [ТС]     Генерация и обработка исключений #13
Пустое приложение (XALM), а у вас все работает?
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
15.09.2013, 16:01     Генерация и обработка исключений #14
Цитата Сообщение от MrWoolf Посмотреть сообщение
Пустое приложение (XALM), а у вас все работает?
У меня работает.
MrWoolf
3 / 1 / 0
Регистрация: 29.11.2012
Сообщений: 60
15.09.2013, 16:04  [ТС]     Генерация и обработка исключений #15
Уже качаю 10 студию, спасибо большое что помогаете.
alsav22
15.09.2013, 16:15
  #16

Не по теме:

Цитата Сообщение от MrWoolf Посмотреть сообщение
Уже качаю 10 студию
А как же: "в другой не разрешают"?

MrWoolf
3 / 1 / 0
Регистрация: 29.11.2012
Сообщений: 60
15.09.2013, 17:49  [ТС]     Генерация и обработка исключений #17
нужно посмотреть как работает, и правельно ли будет выполнено задание, потом буду думать как сделать в другой среде...

Добавлено через 1 час 31 минуту
да в 10 работает... а можно как-то обнулить стек другими способами а не через функцию _resetstkoflw, может есть более старые способы? чтоб в Borland C++ это скомпилить?
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
15.09.2013, 18:43     Генерация и обработка исключений #18
Цитата Сообщение от MrWoolf Посмотреть сообщение
да в 10 работает...
Вы мне не верили? Стоило студию качать, чтобы вернуться к:
Цитата Сообщение от MrWoolf Посмотреть сообщение
чтоб в Borland C++ это скомпилить
MrWoolf
3 / 1 / 0
Регистрация: 29.11.2012
Сообщений: 60
15.09.2013, 18:45  [ТС]     Генерация и обработка исключений #19
Я вам верил, мне нужно было убедиться в правельности выполнения задания по моему вареанту, а не в том что скомпелируеться оно или нет...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.09.2013, 18:48     Генерация и обработка исключений
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
15.09.2013, 18:48     Генерация и обработка исключений #20
Цитата Сообщение от MrWoolf Посмотреть сообщение
а можно как-то обнулить стек другими способами а не через функцию _resetstkoflw,
А зачем его, вообще, обнулять?
Yandex
Объявления
15.09.2013, 18:48     Генерация и обработка исключений
Ответ Создать тему
Опции темы

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