Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.11.2012, 15:07   #1
Smart
Пользователь
 
Регистрация: 05.05.2008
Сообщений: 19
По умолчанию Обработка исключений с пoмощью структурированной обработки исключений

Есть функция, которая определенным образом работает с файлами,но при работе с файлами "не подходящего" типа вызывается необработанное исключение access violation 0xC0000005. Пытаюсь поймать это исключение с помощью SEH , ниже привожу код:
код C++

Int filter(unsigned into code,struct _exception_pointers *ep)
{
if(code==exception_pointers)
Cout<<"access violation";
Else
Cout<<"it 's okey";
}
Int main()
{
...
Int test;
__try{
Test=fu();
}
__except(filter(getexceptioncode(), getexceptioninformation()))
{
Cout<<"AV"
}
}


Функция подключается из другого хидера, при компилировании ошибки:
В теле функции fu()
1. на строчку
код C++
1:
ifstream bin_f(file_name,ios::binary)

Ошибка: warning C4509: nonstandard extension used: 'fu()' uses SEH and 'bin_f' has destructor see declaration of 'bin_f'
2.Строчка возврата функции (return) ошибка аналогичная, только вместо 'bin_f' стоит 'buf'
3.Далее на скобку завершения функции 'fu()',строчка с ошибкой аналогична 1.
4.Опять на скобку завершения функции 'fu()',строчка с ошибкой аналогична 2.
5.Снова на скобку завершения функции 'fu()',строчка с ошибкой: Cannot use __try in functions that require object unwinding

buf-это объект отдельного класса.

Смотрел в интернете кроме общих вещей ничего не нашел, подскажите,кто знает
Smart вне форума Ответить с цитированием
Старый 01.11.2012, 15:22   #2
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

SEH не вызывает деструкторы объектов, поэтому используйте либо с++ исключения, либо код без ООП в SEH. В вашем случае можно попробовать использовать Сифайлы (FILE*) вместо потоков ввода-вывода (ifstream ).
counter вне форума Ответить с цитированием
Старый 01.11.2012, 15:28   #3
Smart
Пользователь
 
Регистрация: 05.05.2008
Сообщений: 19
По умолчанию

Да, но если строчка ifstream bin_f(file_name,ios::binary) никаким образом не входит ни в блок try ни в блок except, эта строчка выше блока обработки исключений
Smart вне форума Ответить с цитированием
Старый 01.11.2012, 15:38   #4
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

ну так показывай толком код и ошибки
counter вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
C# обработка исключений NeoX_2011 Помощь студентам 3 19.03.2012 01:04
Библиотека обработки исключений на Си qmor Общие вопросы C/C++ 0 03.10.2011 21:26
Ошибка обработки исключений try...except Vova777 Общие вопросы Delphi 31 03.06.2011 13:13
Обработка исключений Ckomoroh Общие вопросы Delphi 6 21.03.2011 08:52
обработка исключений scray PHP 3 15.05.2010 15:02