Чаму акрамя не злавіць гэтую памылку?

У мяне ёсць праграма, якая імітуе кідкі кубікаў і параўноўвае іх са значэннямі ў дыяграме (набор спісаў String). У цяперашні час я атрымліваю значэнне з TEdit. Калі поле пустое гэта падымае EConvertError, які павінен быць злоўлены мой Try/за выключэннем заявы, але гэта не так. Думкі і парады? Код ніжэй, 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;
5
Ці ёсць злавіць яго, калі вы запусціце яе без адладчыка (запусціць праграму непасрэдна ў вокнах, а не ў Delphi)?
дададзена аўтар Avo Muromägi, крыніца
Калі выключэнне ўзнікае ў перыядзе паміж спробай і акрамя таго акно паведамлення будзе паказана. Таму я раблю выснову, выключэння не ўздымаюцца. ці дапамогуць новыя водступы?
дададзена аўтар David Heffernan, крыніца
Змена StrToInt ў выпадку (ShootingRadio.Checked = True) і (TryStrToInt (Edit1.Text, BS)), а затым пачаць ... канец;
дададзена аўтар Arjen van der Spek, крыніца

1 адказы

«Прыпынак на выключэннях Delphi» правяраюцца у наладах адладчыка. Выключэнне на самай справе злавіў проста выдатна, але IDE спыняецца, калі вы яго атрымаеце. Калі вы па-ранейшаму працуе, вы не будзеце бачыць выключэнне, але ваша паведамленне замест. З IDE будзе працаваць нармальна.

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

9
дададзена
альтэрнатыўны падыход да адключэння «разарваць на выключэнне», каб выкарыстоўваць непарыўныя кропкі супыну, каб уключыць і адключыць парушэнне - гл edn.embarcadero.com/article/31263 для дэталяў, у прыватнасці, Ігнараваць наступныя выключэння і Handle наступных выключэннямі . Гэта карысна, калі ў вас ёсць выключэнне, вы не можаце прадухіліць, напрыклад, гэта код трэцяга боку.
дададзена аўтар Gerry Coll, крыніца
Я аддаю перавагу перапынак на выключэнне. Я хацеў бы ведаць, што адбываецца. Код, які выклікае шмат выключэнняў, якія сапраўды выкарыстоўваюцца для кіравання патокам (Інды, я гляджу на вас) зводзіць мяне з розуму.
дададзена аўтар Warren P, крыніца
Калі гэта правільны адказ, то пытанне не так! Пытанне кажа, што апрацоўшчык выключэнняў не працуе! Ах, ідзі разбярыся.
дададзена аўтар David Heffernan, крыніца
@TOndrej ніякай крытыкі адказ! Гэта пытанне, які выключаны. Ва ўсякім разе, гэта добра, што хтосьці працаваў яго - я цалкам упэўнены, што я ніколі б не прыдумалі гэты адказ! ;-)
дададзена аўтар David Heffernan, крыніца
@WarrenP Не ўпэўнены, 7, але ў апошніх версіях, вы можаце выбраць спіс тыпаў выключэнняў ігнараваць.
дададзена аўтар GolezTrol, крыніца
@DavidHeffernan Unfortunatly, гэта распаўсюджаная памылка, што памяшканне try..except блок вакол кода прывядзе да таго, IDE ігнараваць гэта выключэнне таксама. Я бачыў гэтую праблему некалькі разоў з розных нагодаў, і, мяркуючы па першым каментарыю да гэтага пытання, гэтак жа AVO Muromägi.
дададзена аўтар GolezTrol, крыніца
Вы занадта добра ў праграмаванні, каб нават думаць, што хтосьці зробіць памылку, як гэта, вось чаму. :)
дададзена аўтар GolezTrol, крыніца
@DavidHeffernan гэта быў добры адказ, і атрымаў +1 ад мяне.
дададзена аўтар Ondrej Kelle, крыніца
І, на жаль, ён не ставіў, што ў якасці адказу, які я б пагадзіўся.
дададзена аўтар Aaron, крыніца