|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
01.11.2012, 15:07 | #1 |
Пользователь
Регистрация: 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-это объект отдельного класса. Смотрел в интернете кроме общих вещей ничего не нашел, подскажите,кто знает |
01.11.2012, 15:22 | #2 |
Участник клуба
Регистрация: 18.10.2008
Сообщений: 1,409
|
SEH не вызывает деструкторы объектов, поэтому используйте либо с++ исключения, либо код без ООП в SEH. В вашем случае можно попробовать использовать Сифайлы (FILE*) вместо потоков ввода-вывода (ifstream ).
|
01.11.2012, 15:28 | #3 |
Пользователь
Регистрация: 05.05.2008
Сообщений: 19
|
Да, но если строчка ifstream bin_f(file_name,ios::binary) никаким образом не входит ни в блок try ни в блок except, эта строчка выше блока обработки исключений
|
01.11.2012, 15:38 | #4 |
Участник клуба
Регистрация: 18.10.2008
Сообщений: 1,409
|
ну так показывай толком код и ошибки
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
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 |