今天发现一个delphi2006奇怪的bug,代码是这样的function CalcPlaneBaseNormalByEdo(const AEdo: IGCLElementDrawObj): TGGLPoint3d;
begin
  Result := CalcPlaneBaseNormal(TGCLFaceShape(TGCLElementDrawObj(AEdo.GetObject).Shape));
end;AEdo.GetObject访问的是接口的对象CalcPlaneBaseNormal我加了异常处理,没有走到,原因肯定参数的问题
在这个函数函数加了异常处理,异常里面重新走就没有报错换了一个方法 接口里面取对象用变量缓存,之后访问就报错了
function CalcPlaneBaseNormalByEdo(const AEdo: IGCLElementDrawObj): TGGLPoint3d;
var
  oObject: TObject;
begin
  oObject := AEdo.GetObject;
  Result := CalcPlaneBaseNormal(TGCLFaceShape(TGCLElementDrawObj(oObject).Shape));
end;求高手帮忙解释一下