定义一个类,
type
TMyClass=class
private
FStr:PChar;
public
constructor Create();
destructor Destroy();override;
end;
实现方法:
constructor TMyClass.Create;
begin
FStr:=StrAlloc(10);
StrCopy(FStr,'ABCDEFGHI');
raise Exception.Create('Error');
end;
destructor TMyClass.Destroy;
begin
StrDispose(FStr);
ShowMessage('Free Resource');
inherited;
end;
调用:
procedure TForm1.Button1Click(Sender: TObject);
var
obj:TMyclass;
i:integer;
begin
try
obj:=TMyclass.Create;
ShowMessage('succeeded');
except
obj:=nil;
ShowMessage('Failed');
end;
end;
以上程序执行时,当有try语句时,看不到"Error"信息,不用try语句时,先显示"Failed",然后才显示"Error"信息,构造函数是没有返回值的,因此不能依赖返回值来解决,但可以用捕获异常来确定,如果某构造函数可能会抛出异常,一定要用try包住它.