Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > не обрабатывается исключение


Автор: DPbIH 5.2.2008, 11:36
элемент вектора _testEtalons[0] не существует! 
исключение не обрабатывается, вылетает унхэндлд экзэпшн при попытке доступа по адресу!

Код

try
{
               IK->_testEtalons[0]._attributes.updateAttribute(EtalonType::id, 
                                                        EtalonType::name,
                                            EtalonType::desc,
                                            etalonType,
                                            EtalonType::unit,
                                            EtalonType::order,
                                            EtalonType::visible);

}
catch(...)
{
    return;
    /*обращение к атрибутам и методам несуществующего объекта эталона*/
}

Автор: xvr 5.2.2008, 14:48
Цитата(DPbIH @ 5.2.2008,  11:36)
элемент вектора _testEtalons[0] не существует! 
исключение не обрабатывается, вылетает унхэндлд экзэпшн при попытке доступа по адресу!

Код

try
{
               IK->_testEtalons[0]._attributes.updateAttribute(EtalonType::id, 
                                                        EtalonType::name,
                                            EtalonType::desc,
                                            etalonType,
                                            EtalonType::unit,
                                            EtalonType::order,
                                            EtalonType::visible);

}
catch(...)
{
    return;
    /*обращение к атрибутам и методам несуществующего объекта эталона*/
}

C++ exception != SEH. Используй __try/__except 

Автор: EnergoHokum 5.2.2008, 14:51
Не забывай только, что __try/__except -- micro$oft-specified (так кажись) расширения, и если у тебя появится мысль о переносимости...

Автор: Lazin 5.2.2008, 15:26
смотри в сторону _set_se_translator 
в файле <eh.h>
эта ф-я позволяет назначить свой обработчик для исключений SEH, и в этом обработчике преобразовывать их в обычные исключения.

Автор: xvr 5.2.2008, 17:38
Цитата(EnergoHokum @ 5.2.2008,  14:51)
Не забывай только, что __try/__except -- micro$oft-specified (так кажись) расширения, и если у тебя появится мысль о переносимости...

SEH в частности и Win32 в общем тоже 'micro$oft-specified', а так как micro$oft не предусмотрел другой метод работы с SEH, кроме __try/__except (_set_se_translator не в счет - он еще более 'MS specific'), то все компиляторы для Win32 должны поддерживать эту сладкую парочку (или конвертировать ее в C++ style exception)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)