function TForm1.rt: integer;
var i:integer;
begin
  i:=101;
  result:=-1;
    if i>100 then
      raise TEMyerr.Create;         // 随便哪个异常都行
end;{Raise引发异常的程序段执行没有返回值}
procedure TForm1.BtnReadResultClick(Sender: TObject);
var rs:integer;
begin
        rs:=rt;
        showMessage(intTostr(rs));       //显示的为空
end;结果: 程序中Raise一个异常后,那个程序的返回值就没了,像Rt中的Result不再是-1,而是空的吧?? 那我如何取得Raise前的Result的值? 谢谢

解决方案 »

  1.   

    兄弟你试了吗?我推测你的showMessage(intTostr(rs));根本就不会进行,你这样自己抛出一个异常又没有自己处理,程序怎么往下进行啊
      

  2.   

    出现了异常要自己进行处理,否则delphi就替你处理了并不会按照你的意思往下进行
    function TForm1.rt: integer;
    var i:integer;
    begin
      i:=101;
      try 
        if i>100 then
        raise TEMyerr.Create;         // 随便哪个异常都行
      except
          result:=-1;
      end ; 
    end;
      

  3.   

    raise 就终止整个过程了。除非你截了异常
      

  4.   

    {Raise引发异常的程序段执行没有返回值}
    procedure TForm1.BtnReadResultClick(Sender: TObject);
    var rs:integer;
    begin
    try    
        rs:=rt;
    except
        showMessage(intTostr(rs));       //显示的为空
    end;
    end;