当程序出现错误时,如何能将错误提示框拦截,并将提示内容输出成为字符串

解决方案 »

  1.   

    1 你可以直接用自己的applicationexception对象,这样系统就不会缺省弹出
    2 你可以直接
    try
    ...
    except
    on e:except do showmessage(e.message);
    end;
      

  2.   

    procedure TDM.DataModuleCreate(Sender: TObject);
    begin
      MainConnect.Connected := False;
      MainConnect.ConnectionString := ConnStr;
      try
        MainConnect.Connected := True;
      except on E: Exception do
        begin
          Application.MessageBox(Pchar('连接数据库失败,出错信息如下:'+#13 + E.message), '提示信息', 0);
          Application.Terminate;
        end;
      end;
    end;
      

  3.   

    用TRY捕捉啊 ,所有错误都会被APPLICATION捕捉的
      

  4.   

    下面就是我做的一个捕捉错误的程序:
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, Grids, DBGrids, ExtCtrls, DBCtrls, DB, ADODB, DBTables;type
      TForm1 = class(TForm)
        ADOConnection1: TADOConnection;
        ADODataSet1: TADODataSet;
        DataSource1: TDataSource;
        DBNavigator1: TDBNavigator;
        DBGrid1: TDBGrid;
        Lb: TListBox;
        Button1: TButton;
        Edit1: TEdit;
        Edit2: TEdit;
        procedure ADODataSet1PostError(DataSet: TDataSet; E: EDatabaseError;
          var Action: TDataAction);
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
        procedure ShowADOErrors;
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.ShowADOErrors;
    var
      adoErrors:Errors;
      adoError:Error;
      iCount:Integer;
    begin
      adoErrors:=ADOConnection1.Errors;
      for iCount:=0 to adoErrors.Count-1 do
        begin
          adoError:=adoErrors.Item[iCount];
          lb.Items.Add('Error Number:'+Inttostr(adoError.Number));
          lb.Items.Add('Error Source:'+adoError.Source);
          lb.Items.Add('Error Description:'+adoError.Description);
          lb.Items.Add('Error HelpFile'+adoError.HelpFile);
          lb.Items.Add('Error SQLState:'+adoError.SQLState);
          lb.Items.Add('Error NativeError:'+InttoStr(adoError.NativeError));
        end;
    end;procedure TForm1.ADODataSet1PostError(DataSet: TDataSet; E: EDatabaseError;
      var Action: TDataAction);
    begin
      ShowADOErrors;
    end;procedure TForm1.Button1Click(Sender: TObject);
    var
      bResult: Boolean;
    begin
      try
        bResult:=ADODataSet1.Locate(Edit1.Text,Edit2.Text, [loCaseInsensitive,loPartialKey]);
        ShowADOErrors;
      Except
        On E:exception do
          lb.Items.Add(E.Message);
      End ;
    end;end.
      

  5.   

    放一个ApplicationEvent,在Additional页面上,在它的事件里面处理好了