我的代码try
  xxxx
  xxxx
except
end;如果在try块中有异常,except不做处理,这个异常会不会捕捉不到?

解决方案 »

  1.   

    try
      xxxx
      xxxx
    except
    end;不会捕捉到
    但是不会提示错误
      

  2.   

    try
    except
      on e: exception do
      begin
        showmessage('恭喜,操作完成!');
      end;
    end;
    ShowMessage('go on');应该会吧,因为当try后except后还有提示.
      

  3.   

    开发环境delphi会提示,运行环境会忽略。
      

  4.   

    to 楼上:不一定的阿,我遇到过的:.... XXXXXXXXXXXXXX address .... XXXXXXXXXXXXXX具体内容忘了,总之是关于内存地址的
      

  5.   

    一般情况会提示,
    try
      xxx
    ecept
    end;
    如果xxx出现异常,Delphi调试环境时,会有提示(也可以设置为不提示),运行时忽略,
    但也有时候也会拦截不到错误,比如在
      xxx 里面改边了fs:[0]处的值,就会出问题。甚至出现Windows的程序运行错误框。
      

  6.   

    还有一种情况不会拦截不到错误信息
    整个工程里面都没有直接和间接引用SysUtils单元,因为在SysUtils单元里面初始化了错误处理链
    这个时候
    Try
      xxx
    except
      xxx2;
    end;
    xxx2绝对不会被执行。请看这个例子:
    program Project1;uses
      Windows,SysUtils;{$R *.res}var
      I : integer;
    begin
      try
        i := PInteger(Ptr(0))^;  //肯定出错
        TerminateProcess(i,0);   //这句没有什么作用,只是为了让i被使用而已
      except
        MessageBox(0,'aa','cc',64);
      end;
    end.如果引用了SysUtils那么就会有提示框aa,cc,如果没有引用,就会弹出RunTime Error的提示框。