为什么 Delphi 中的 Try/Except 语句没有捕获 EConvertError 错误?

问题描述 投票:0回答:1

我有一个程序可以模拟掷骰子并将其与图表(一组字符串列表)中的值进行比较。我目前从

TEdit
获取值。如果该框是空的,它会引发一个
EConvertError
,它应该被我的 Try/Except 语句捕获,但事实并非如此。

想法和建议?

下面的程序代码是使用Delphi编程语言编写的:

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;
delphi error-handling delphi-7 try-except uncaught-exception
1个回答
11
投票

在调试器选项中选中“出现 Delphi 异常时停止”。实际上,异常可以很好地捕获,但是当您捕获它时 IDE 就会停止。当您继续运行时,您将不会看到异常,而是看到消息。从 IDE 中出来它会运行良好。

您可以取消选中此选项(我通常这样做)。当你需要调试一些顽固的问题时,你可以随时重新检查它。

© www.soinside.com 2019 - 2024. All rights reserved.