{自定义异常}
type
  TEMyErr=class(Exception)
    errorCode:integer;
    errorInfo:string;
  end;{捕捉异常}
procedure TForm1.Button1Click(Sender: TObject);
begin
try
  myRaise(40);
  myRaise(120); 
  myraise(40);         //异常后要继续执行这个程序except
  on err1:TeMyerr do
    showMessage(err1.errorInfo);      //我想显示出异常信息
end;end;
{产生异常的程序}
procedure TForm1.myraise(i: integer);
begin
  if i<100 then showMessage('100');
  if i>100 then
  begin
    raise eMyerr;
      eMyErr.errorInfo:='i>100';        //这是我想显示的异常信息
  end;
end;执行结果: 出现 "runtime error 216 at 00403896" 错误框 ,然后程序直接退出我想要的结果: 出现 提示说 'i>100'; ,然后程序继续执行 myraise(40);  而不是异常后退出谢谢。

解决方案 »

  1.   

    是因为你是在Delphi的集成开发环境下运行的事吧?把程序编译后,直接在WINDOWS下运行看看。
    因为DELPHI默认是 STOP ON DELPHI EXCEPTION.
      

  2.   

    回楼上都一样
    我直接打开 Exe也是一样的错误信息。 你可以试下这段程序就知道了。
      

  3.   

    unit Uni_Main;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, ComCtrls;type
      TForm1 = class(TForm)
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
        procedure myraise(i: integer);
      end;
    Type
    TEMyErr=class(Exception)
      errorCode:integer;
      errorInfo:string;
      constructor Create( code : Integer;info : string);
    end;var
      Form1: TForm1;implementation{$R *.dfm}{ TForm1 }procedure TForm1.myraise(i: integer);
    begin
        //if i<100 then showMessage('100');
        showMessage(inttostr(i));
          if i>100 then
          begin
            raise  TEMyErr.Create(0,'i>100'); 
          end;
    end;
    { TEMyErr }constructor TEMyErr.Create(code: Integer; info: string);
    begin
      errorCode := code;
      errorInfo := info;
    end;procedure TForm1.Button1Click(Sender: TObject);
    begin
    try  myRaise(40);
    except
      on E:TeMyerr do
        showMessage(E.errorInfo); //我想显示出异常信息
      on E:Exception do
        ShowMessage(E.Message);
    end;try  myRaise(120);
    except
      on E:TeMyerr do
        showMessage(E.errorInfo); //我想显示出异常信息
      on E:Exception do
        ShowMessage(E.Message);
    end;try  myraise(40); //异常后要继续执行这个程序except
      on E:TeMyerr do
        showMessage(E.errorInfo); //我想显示出异常信息
      on E:Exception do
        ShowMessage(E.Message);
    end;
    end;end.
      

  4.   

    参考<Delphi高手突破>第3章
      

  5.   

    ;en...谢谢回复的,特别是 coreblood(IunKnow)  结了