请教一下,try finally可以嵌套吗?obj1.create
try
  obj2.creat
  try
    code.....
    .........
  finally
    obj2.free
  end;
 
finally
  obje1.free
end;以上编译的时候是正常的。如果多了一层嵌套,如下,编译的时候会出现警告提示:obj2,obj3可能没有被初始化
obj1.create
try
  obj2.creat
  try
    code.....
    .........
    obj3.creat
    try
      code...
      .......
    finally
      obj3.free
    end; 
  finally
    obj2.free
  end; 
finally
  obje1.free
end;

解决方案 »

  1.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      i,j:integer;
    begin
      try
        i:=1;
        try
          j:=1;
        finally
          ShowMessage('ok');
        end;
      finally
        ShowMessage('asdf');
      end;
    end;
      

  2.   

    居然是try,那自己try一下不就知道的吗?
    不过你那样写不太好,先Create,最后free就可以了,没必要一个一个create.obj1.create;
    obj2.create;
    obj3.create;
    try 
      {do something}
    finally 
      obje1.free; 
      obje2.free; 
      obje3.free; 
    end;