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


Автор: Кирилл 22.3.2004, 15:53
Вопрос тем, кто сталкивался с проблемами обработки исключений в C++ Builder 6.

Кратко :

// максимально примитивный кусок кода
try{
throw 1;
}catch(int err){
printf("%d",err);
}
// ошибиться негде !

При первом запуске на строку 'throw 1;' указывает runtime error 'Exception Object Address:0x844A16' при следующем всё работает как должно .

ПОЧЕМУ ??? (и что делать :)

Более вредная ошибка возникает при работе с динамической памятью.

После большого колличества обращенни к динамически распределенному массиву произвольным образом меняестся значение указателя на него, что через некоторое время приводит к ошибке и выбросу соответствующего исключения.

Что может послужить причиной неявного (нигде не меняю его явно) изменения указателя ?

Автор: Vyacheslav 22.3.2004, 16:01
Если запускаешь под IDE, то все так и должно быть. На
throw 1;
IDE просто демонстрирует где и какое исключение сгенерилось, запускаешь дальше - оно соответственно ловится. Запусти этот прогрмму без IDE и все сработает как надо.
Цитата

Более вредная ошибка возникает при работе с динамической памятью.

После большого колличества обращенни к динамически распределенному массиву произвольным образом меняестся значение указателя на него, что через некоторое время приводит к ошибке и выбросу соответствующего исключения.

Здесь телепатов нет. Давай конкретный код, тогда посмотрим

Автор: Дрон 22.3.2004, 16:50
В IDE можно отключить эту опцию.
Tools -> Debugger Options... -> Language Exceptions
А там есть: Stop on Delphi Exceptions и Stop on C++ Exceptions.
Сними галочки и проверь.

Что касается второго вопроса (только не говорите об этом модератору smile.gif ), то тут действительно нужно описать проблему поконкретней.

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