看如下代码:
var
temp:integer;
begin
try
temp:=strtoint(edit1.text);
edit2.text:=inttostr(temp);
except
showmessage('输入错误.');
end;
end;
代码本身没什么用,我是想用来实验try和except语句的,但运行程序,我输入232.a1,会得出232.a1不是一个整形数的错误提示.请问是为什么啊?我就是要用try和except语句来检测一系列输入数据的正确性,
请大家帮忙一下.
var
temp:integer;
begin
try
temp:=strtoint(edit1.text);
edit2.text:=inttostr(temp);
except
showmessage('输入错误.');
end;
end;
代码本身没什么用,我是想用来实验try和except语句的,但运行程序,我输入232.a1,会得出232.a1不是一个整形数的错误提示.请问是为什么啊?我就是要用try和except语句来检测一系列输入数据的正确性,
请大家帮忙一下.
在执行exe文件才行,
编译时不执行except语句
-- 直接执行exe文件,不要执行源文件
编译环境下异常会直接被抛出
Delphi在调试状态下会截获所有的异常并报出,这是为了方便调试者准确的得知异常的类型和抛出地点。如果你执行编译出的Exe将不会有调试器附加的这些异常报告。
一般来说异常应该用到真正异常——也就是说不在正常的程序逻辑之中的情况,象楼主提到的这种情况,完全可以自己写个函数判断一下。
如果真的要这样用到异常,又觉得调试状态的报告太烦,可以在Tools-Debugger options-language exceptions中去掉stop on delphi exceptions选项,这样就不会报出这些异常了。
也可以更加精细的控制,在忽略Exception列表中增加需要忽略的异常类型,比如这里就可以加入EConvertError,这样调试器就不会报出这个类型的异常。
temp:=strtoint(edit1.text);
edit2.text:=inttostr(temp);
里面已经执行了这两条语句,并没有错误,所以当然不会提示了.