当一个整数表达式的值超过为一个特定整数类型分配的范围时引发 ERangeError 异常。
比如下面一段代码应该会引发一个 ERangeError 异常,但是实际测试结果并没有捕获到异常,代码如下:
procedure TForm1.btnCatch2Click(Sender: TObject);
var
SmallNumber:ShortInt;
X,Y:Integer;
begin
try
X:=100;
Y:=75;
SmallNumber := X + Y;
ShowMessage(IntToStr(SmallNumber));
except
on ERangeError do
ShowMessage('Error');
end;
end;预计显示结果:弹出Error信息提示框
实际显示结果:-81
比如下面一段代码应该会引发一个 ERangeError 异常,但是实际测试结果并没有捕获到异常,代码如下:
procedure TForm1.btnCatch2Click(Sender: TObject);
var
SmallNumber:ShortInt;
X,Y:Integer;
begin
try
X:=100;
Y:=75;
SmallNumber := X + Y;
ShowMessage(IntToStr(SmallNumber));
except
on ERangeError do
ShowMessage('Error');
end;
end;预计显示结果:弹出Error信息提示框
实际显示结果:-81
ERangeError 异常只有当范围检查打开时才会引发,可以在代码中包含{$R+}编译指示或设置 IDE Option|Project 的 Range_Checking Option 选择框。