Тема: C++Builder bug?
Показать сообщение отдельно
Старый 18.12.2004, 06:16     # 6
blacklist
Newbie
 
Регистрация: 25.08.2004
Сообщения: 11

blacklist Путь к славе только начался
Мда... Невесело... Ведь такой глюк проявляется при попытке перехватить исключение любого класса производного от EExternal - то есть всех исключений, которые возбуждаются операционной системой. Вот ещё пример для EAccessViolation (который, само-собой, работает неправильно):
Код:
{
  __try
  {
     int* p = NULL;
     *p = 0x1234;
  }
  catch(const EAccessViolation &E)
  {
    if (E.ExceptionRecord) 
       ShowMessage(IntToHex((int)E.ExceptionRecord->ExceptionAddress,8));
    else ShowMessage("ExceptionRecord is NULL!");
  }
}
Так что для любых классов исключений, производных от EExternal, ни вывести оригинальное сообщение об ошибке, ни, тем более, адрес этой ошибки, похоже нельзя никак... Обидно...

p.s.: тех программеров, чьи светлые головы посетила идея использовать ExceptObject и ExceptAddr, спешу успокоить -- мою голову она посетила раньше. Что бы много не писать, скажу просто - НЕ работает (и ExceptAddr, и ExceptObject равно NULL).
blacklist вне форума