procedure TForm1.ChangeBtnClick(Sender: TObject); var txtstr, txthex: string; begin if fileexists(OriginalEdit.Text) then begin assignfile(TxtFileInt,OriginalEdit.Text); //文件变量与文件名关联 reset(TxtFileInt); //打开文件 if fileexists(GoalEdit.Text) then begin assignfile(TxtFileHex,GoalEdit.Text); //文件变量与文件名关联 rewrite(TxtFileHex); //打开文件 while not eof(TxtFileInt)do begin readln(TxtFileInt,txtstr); //读取源文件内容 txthex:= Encode16(txtstr); //将源文件内容转化为16进制 writeln(TxtFileHex,txthex); //写入目标文件 end; closefile(TxtFileHex); end; closefile(TxtFileInt); end; end; 这是我的代码,异常出现在如果输入一个txtstr很大, 比如1111111111111111111,在转化为16进制的时候会出现‘1111111111111111111’is not a valid integer value.我应该在哪里抛异常?
1.涉及外部程序的,比如接口,DLL等。加个try except。
2.涉及查询的。在提交命令,返回结果的地方加。
3.涉及转化的。
……
其实好多了,写下来发现列不全。
也并不一定是有发生异常就得处理。有的时候比如在循环的临界点调用了某一方法导致异常,但是并不影响程序继续运行(例如获得空的返回值,对调用的方法来说可能是异常,但是对程序逻辑来说是合法的),那么这个时候就可以不处理异常。
一般处理异常也很简单,只要在可能出现异常的地方(例如除法或者创建对象的时候)用try语句包起来,后面带上catch或者finally就可以了。
没把握的就从头到尾try except end吧
随着代码越写越多,越來越成熟后,慢慢的积累,你就会发现那些代码容易出错了
但大多数异常可以交给系统抛出
procedure TForm1.ChangeBtnClick(Sender: TObject);
var
txtstr, txthex: string;
begin
if fileexists(OriginalEdit.Text) then
begin
assignfile(TxtFileInt,OriginalEdit.Text); //文件变量与文件名关联
reset(TxtFileInt); //打开文件
if fileexists(GoalEdit.Text) then
begin
assignfile(TxtFileHex,GoalEdit.Text); //文件变量与文件名关联
rewrite(TxtFileHex); //打开文件 while not eof(TxtFileInt)do
begin
readln(TxtFileInt,txtstr); //读取源文件内容
txthex:= Encode16(txtstr); //将源文件内容转化为16进制
writeln(TxtFileHex,txthex); //写入目标文件
end;
closefile(TxtFileHex);
end;
closefile(TxtFileInt);
end;
end;
这是我的代码,异常出现在如果输入一个txtstr很大, 比如1111111111111111111,在转化为16进制的时候会出现‘1111111111111111111’is not a valid integer value.我应该在哪里抛异常?
你俩的我都看了,好像看懂 好像也没怎么懂似的
我列出来的这个代码,真就差从头到尾抛异常了,结果还是有异常。。这时候我该从哪里入手去考虑吧
比如:‘1111111111111111111’ 对于Integer不够,可以用Int64.