Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Обработка исключения [D7, XP]


neat ©   (2005-12-23 08:27:00) 

Здравствуйте Все! Создал простой пример для проверки кода, но работа программы останавливается на строке e := m/d с выдачей сообщения об исключительной ситуации EZeroDevide, хотя именно его я и пытаюсь обойти, создав свой обработчик. Не пойму в чём дело. Что не правильно ?

var  m, d : word;
   e : real;
begin
    m := 100;
    d := 0;
    try
       e := m/d;
       Edit1.Text := FloatToStr(e);
    except
       MessageDlg('Деление на ноль !', mtError, [mbOk], 0);
    end;


Плохиш   (2005-12-23 11:25:00) [1]


> ведь не должно было после ввода конструкции try...except.

Это ты где-то прочитал или сам придумал?


neat   (2005-12-23 11:18:00) [2]

evvcom , так и было, мне было не понятно, почему сообщение отладчика вообще появляется (перед моим), ведь не должно было после ввода конструкции try...except. Прошу прощения, по-моему уже всё ясно, не будем больше время тратить на это обсуждение.


evvcom   (2005-12-23 10:59:00) [3]


> а в том, что не работала конструкция try...except

она работала, просто отладчик ловил это исключение и сообщал тебе об этом, чтобы ты обратил внимание и поправил. Если поставить бряк на строке в except и далее F9, то увидишь, что отладчик потом там остановится.


neat   (2005-12-23 10:12:00) [4]

evvcomблагодарю за совет, но дело было не в этом самом нуле, а в том, что не работала конструкция try...except и я никак не мог понять в чём дело. А проверки, типа предложенной тобой, я конечно использую.


evvcom   (2005-12-23 09:25:00) [5]

Но лучше эту галку не снимать, а в своем коде, если ожидаешь ошибки, ее предотвратить типа
 if d = 0 then begin
   MessageDlg('Деление на ноль !', mtError, [mbOk], 0);
   Exit;
 end
 else
   e := m/d;

чем допускать исключение


neat   (2005-12-23 09:15:00) [6]

Нашёл, снял, работает! Спасибо Digitman


Digitman   (2005-12-23 09:06:00) [7]

в настройках Делфи сними галку Stop On Delphi Exceptions


Наверх

Титульная страница Поиск, карта сайта Написать письмо