我在表单上有一个ADOQuery和一个ADOConnection,简化的代码如下所示:
在Form.Create上,我只是给 ADOConnection 连接参数并确保它已关闭。在此之后,我从不直接打开 ADOConnection,它只通过 ADOQuery 发生。
try
if ADOQuery.Active then ADOQuery.Close;
ADOQuery.Open;
except
Application.Terminate;
end;
我希望这段代码能够捕获各种异常(如 ADOQuery Timeout)并简单地终止应用程序。
不知何故,我仍然收到 Query Timeout Exceeded 。(但也许它来自 ADOConnection 本身?)我不是 100% 确定。
如果我这样做会解决问题吗:
try
if ADOConnection.Connected:=true then ADOConnection.Close;
if ADOQuery.Active then ADOQuery.Close;
ADOQuery.Open;
except
Application.Terminate;
end;
谢谢你。
更新
问题是 :
这不是捕获查询超时,因为它使用的 AdoConnection 不在 try except 块内?(我真的没有看到任何其他原因)
在此示例中,ADOConnection1 在第一个 ADOQuery.Open 上已连接,并且在软件完成之前一直保持这种状态。
try
if ADOQuery.Active then ADOQuery.Close;
ADOQuery.Open;
except
Application.Terminate;
end;
这个除了似乎没有捕获所有查询超时......