{自定义异常}
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); 而不是异常后退出谢谢。
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); 而不是异常后退出谢谢。
因为DELPHI默认是 STOP ON DELPHI EXCEPTION.
我直接打开 Exe也是一样的错误信息。 你可以试下这段程序就知道了。
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.