禁止出现在Delphi中的错误消息框以查找特定错误

时间:2015-03-20 17:35:29

标签: delphi

目前我正在运行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;

1 个答案:

答案 0 :(得分:1)

根据你的描述(因为你没有显示任何代码),听起来你的循环的每次迭代都会引发你没有捕获的异常,所以它最终会在RTL中的默认异常处理程序中出现显示弹出的MessageBox。如果是这种情况,您需要使用围绕代码失败的try..except块来捕获原始异常。