try...except的问题(100分)

  • 主题发起人 主题发起人 xxl
  • 开始时间 开始时间
X

xxl

Unregistered / Unconfirmed
GUEST, unregistred user!
try
...
close
except
showmessage('..')
我想如果成功的话关闭窗口,不成功就不关闭,写了如上,但我运行时不管成不成功
都是关闭窗口
 
我不知道你是什么意思,try....except内的语句不管怎样都会执行的,
如果在这当中有个语句执行发生异常,则执行except后的语句
 
可以看看try ...finally 和try...except帮助.
 
看看帮助吧!
try
...
except
showmessage()
.......
else
close
end;
 
在OnClose事件中写

Try
。。。//注意这里不用写 Close;
Except
Showmessage('');
Action := caNone
end;
 
try
...
except
showmessage('..');
exit;
end;
close;
 
我是要在没有异常的时候关闭窗口,异常是不关闭窗口,重输入信息
 
单步跟踪一下,看看到底在哪里发生异常的.
 
窗口是怎样显示的,是不是Form.showmodal.如果是的话窗口在执行完了以后会自动关闭
 
试试fsm的方法。
或你检查一下try部分的代码,是不是总是不成立。
 
在try Except 或Try Finally中,
不可以出现以下的东西。
Close.
Exit
Abort之类的东西。
因为try是捕捉错误用的。
如果出了Exception时,
它可以到Except或Finally里面去
但是如果你用了Close(将Form关闭),Exit(退出这个过程)
Abort(中止一个操作),它不会将控制权转换到Except或Finally里去的。
这个可以从编译原理方面考虑~~~
 
var
CanClose:Boolean;
begin
...
try
...
Canclose:=True;
except
showmessage('..')
Canclose:=False;
end;

if CanClose then
Close;

...

end;


try it?!
 
把CLOSE去掉就OK了
 
多人接受答案了。
 
請試驗兩個程序﹕
1.在窗口中放一個button,在onclick事件中寫如下代碼:
var
s:string;
begin
try
s:='sdf';
strtoint(s);
close;
except
showmessage('false');
end;
end;
這個程序不關閉,只會彈出消息框﹐信息為false;
2.同程序1一樣,只是代碼略有不同﹕
var
s:string;
begin
try
s:='123';
strtoint(s);
close;
except
showmessage('false');
end;
end;
該程序點擊按鈕後,窗口自動關閉。
xxl:你程序的問題可能是沒有產生異常


 
后退
顶部