WITH TIDHTTP.CREATE(SELF) DO
  begin
//   TRY
    s:=idhttp1.Get('http://www.xxxxxx.html');
//    FINALLY
//    FREE;
//   ENd
  end;
把try注释掉也可以运行。try语句有什么必要性吗?

解决方案 »

  1.   

    以上代码会有资源泄露。TIDHTTP不会被释放
    try
    一般是用于处理异常的
      

  2.   

    无论 s:=idhttp1.Get('http://www.xxxxxx.html');  是否执行成功 TIDHTTP对象都会在执行过后释放掉
      

  3.   

    不管try中的语句是否执行,finally段的语句必须执行,此时将释放TIDHttp组件占用的资源。如果没有finally,则占用的资源不释放,知道系统退出。
      

  4.   

    如果过程发生了不可预知的错误TIDHTTP这个对象由谁来释放?建议看一些异常处理的资料!几乎所有的OO语言都有类似的机制
      

  5.   

    有时候,在调用别人写的接口的时候,为了防止别人程序的错误,而导致自己的程序受影响.凡是在调用对方的接口处,最好都用
    try 
    except 
    end保证自己程序的健壮性
      

  6.   

    tryfinallyend;手动创建的对象,做最终释放!