Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
 
MrWoolf
3 / 1 / 0
Регистрация: 29.11.2012
Сообщений: 60
#1

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

10.09.2013, 15:47. Просмотров 942. Ответов 20
Метки нет (Все метки)

Здравствуйте, помогите в написании программы, очень надо.

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

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

Помогите пожалуйста, буду очень благодарен.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.09.2013, 15:47
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Генерация и обработка исключений (C++):

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

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

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

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

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

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

20
Kastaneda
Jesus loves me
Эксперт С++
4689 / 2893 / 236
Регистрация: 12.12.2009
Сообщений: 7,355
Записей в блоге: 2
Завершенные тесты: 1
10.09.2013, 15:59 #2
Сгенерировать EXCEPTION_STACK_OVERFLOW легко, достаточно написать рекурсию без выхода. А обработать средствами С++ нельзя, придется использовать WinAPI (или о какой ОС идет речь?).
В гугл "EXCEPTION_STACK_OVERFLOW handling"
1
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; 
}
0
MrWoolf
3 / 1 / 0
Регистрация: 29.11.2012
Сообщений: 60
11.09.2013, 17:31  [ТС] #4
Подскажите, что делать?? Буду очень благодарен.
0
MrWoolf
3 / 1 / 0
Регистрация: 29.11.2012
Сообщений: 60
14.09.2013, 23:28  [ТС] #5
Помогите пожалуйста кто-нибудь, подскажите хоть что-то.
0
Kastaneda
Jesus loves me
Эксперт С++
4689 / 2893 / 236
Регистрация: 12.12.2009
Сообщений: 7,355
Записей в блоге: 2
Завершенные тесты: 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;
}
1
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'

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

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

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

обработка исключений - C++
Есть вот такой код: #include &lt;iostream&gt; #include &lt;fstream&gt; using namespace std; int _tmain(int argc, _TCHAR* argv) { ...

Обработка исключений - C++
Почему не перехватывает ошибку и не выводит Error? а прога сама прекращает работу. #include &lt;iostream&gt; using namespace std; ...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

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