关于异常事件的处理(try...except)(100分)

  • 主题发起人 主题发起人 刘玉升
  • 开始时间 开始时间

刘玉升

Unregistered / Unconfirmed
GUEST, unregistred user!
对文本框所输入的内容进行类型检查。
如,使用StrToFloat函数后如何用try...except处理EConvertError,显
示自己的提示信息。
 
try
StrToFloat...
except
on EConvertError do ...//在这里显示提示信息
end;

看看Delphi的帮助文档
 
1. 如果是判断是否是数字, 应该使用val函数, 尽量避免使用
strtoInt, strtofloat等函数, 因为这些函数是不做合法性判断的,
如果字符串不合法就会造成出错.

2. 用try ... except的时候, 任何时候的出错都直接跳转到except部分.
比如:
s:='1.3zc3';
try
m:=strtofloat(s);
except
showmessage('Error in program!');
end;
 
try
Temp := StrToFloat('asjklafj');
except
on E: EConvertError do
ShowMessage(E.ClassName + #13+#10 + E.Message);
// 也可以加自己的话
end;
但应注意异常处理在Delphi调试中是不起作用的,
单独运行EXE时才能看出来
 
最简单的办法:
try
执行语句
except
执行出错怎么办?
end;

 
to Iknow: No No, strtoint 之类也是调用val的,
只不过在里面加了异常而已。


用try...except... 外, 如果在调试状态下,必须关掉delphi的异常处理,
否则出现异常时,会跳回ide,继续运行才会出现自己的信息
 
个人观点:
在调试状态下,最好不要关掉异常处理选项,否则对可能发生的错误一无所知,
程序出错的可能性就比较大。
 
灌!!
try
StrToFloat(edit1.text);
except
on EConvertError do Showmessage('ERROR,ERROR,BOMB!');
end;


 
也灌.
我一般不用strtofloat, strtoint而是用strtointdef并写了个strtofloatdef函数,
不能转换的就置成默认值 :D, 根本不出现错误对话框.
 
这个问题该结束了吧?
 
try
StrToInt(editx.Text);
except
Showmessage('非法整数');
editx.setfocus;
editx.selectall;
end;
 
try
strtofloat(editdate.text)
except
on econverterror do
begin
showmessage('输入浮点数格式错误');
editdate.text:='';
editdate.setfocus;
end;
end;{try}
 
try
StrToFloat...
except
on EConvertError do ...//在这里显示提示信息
end
 
天哪,这个问题讨论了一年了,问题的主人有点公德好不好。
 
多人接受答案了。
 
后退
顶部