Почему кроме не ловит эту ошибку? - PullRequest
6 голосов
/ 28 октября 2011

У меня есть программа, которая имитирует броски костей и сравнивает их со значениями в диаграмме (набор списков строк). В настоящее время я получаю значение от TEdit. Если поле пусто, оно вызывает ошибку EConvertError, которая должна быть обнаружена моим оператором Try / Except, но это не так. Мысли и советы? Код ниже, Delphi 7.

try
  //Shooting
  if ShootingRadio.Checked then
    BS := StrToInt(Edit1.Text);
  Randomize;
  Roll := RandomRange(1,7);
  Label3.Caption := IntToStr(Roll);
  if (Roll < StrToInt(ShootingHitChart[BS-1])) then
  begin
    Label3.Caption := (IntToStr(Roll)+' Miss');
    RichView1.AddTextNL((IntToStr(Roll)+' Miss'),7,0,1);
    RichView1.Reformat;
  end
  else
  begin
    Label3.Caption := (IntToStr(Roll)+' Hit');
    RichView1.AddTextNL((IntToStr(Roll)+' Hit'),6,0,1);
    RichView1.Reformat;
  end;
except
    MessageBox(0,'No number entered.','Error',mb_OK);
end;

1 Ответ

10 голосов
/ 28 октября 2011

«Остановка при исключениях Delphi» отмечена в опциях отладчика.Исключение на самом деле ловится просто отлично, но IDE останавливается, когда вы его получаете.Когда вы продолжите работать, вы не увидите исключение, а вместо этого ваше сообщение.Из IDE он будет работать нормально.

Вы можете снять эту опцию (я обычно это делаю).Вы всегда можете перепроверить это, когда вам нужно отладить какую-то упрямую проблему.

...