目前我正在运行Delphi表单并且在失去与其数据库/网络丢失的连接后,它会重新建立并继续运行。
服务在计时器上,每分钟都会弹出一个消息框,说明无法连接到网络上的数据库[IP地址]。这是在计时器的开始,运行存储过程。
我在服务本地机器上写入日志文件时有错误,有没有办法可以抑制出现的消息框,因为我不需要它一直出现?通过消息框,它是一个Windows异常框而不是showMessageBox()。它会在异常命中时自动弹出,但在机器启动时会连续点击并重新建立与网络的连接。
我的代码如下
(*Call db Procedure*)
try
db.SQL.Clear;
db.SQL.Add('call dbProc();');
db.ExecSQL;
except
On E : Exception Do
begin
If E.ClassName = 'EIBInterBaseError' Then
begin
WriteToLog('Network Error : An error has occured whilst trying to communicate with the db outside the'
+ ' loop to catch up , please see user guide V.1.0.2.145',2);
reconnectdb;
end
else if E.ClassName = 'EADOError' then
begin
WriteToLog('Network Error : An error has occured whilst trying to communicate with the db outside the'
+ ' loop to catch up , please see user guide V.1.0.2.145',2);
reconnectDB;
end;
end;
end;
答案 0 :(得分:1)
根据你的描述(因为你没有显示任何代码),听起来你的循环的每次迭代都会引发你没有捕获的异常,所以它最终会在RTL中的默认异常处理程序中出现显示弹出的MessageBox。如果是这种情况,您需要使用围绕代码失败的try..except
块来捕获原始异常。