public
    { Public declarations }
    OriException : TExceptionEvent;
    procedure MyException(Sender: TObject; E: Exception);procedure TForm1.Button1Click(Sender: TObject);
begin
  raise exception.Create('xxxxxxxxxxx');
end;procedure TForm1.FormCreate(Sender: TObject);
begin
  OriException := Application.OnException;  //这里保存原来的OnException
  Application.OnException := MyException;
end;procedure TForm1.MyException(Sender: TObject; E: Exception);
begin
  showmessage('xxxxxxxxxxxxxxxxxxxxxxxxxxxx');
  OriException(Sender,E);     //这里报错了,说OriException是个空指针,读地址错误??
end;
为什么会报错? 要怎么改??

解决方案 »

  1.   


    procedure TForm1.MyException(Sender: TObject; E: Exception);
    begin
      showmessage('xxxxxxxxxxxxxxxxxxxxxxxxxxxx');
      if assigned(OriException) then
        OriException(Sender,E);     //这里报错了,说OriException是个空指针,读地址错误??
    end;
      

  2.   

    如果你没有为Application.OnException指定处理过程,你的
    OriException := Application.OnException;等同于OriException := Nil;procedure TForm1.MyException(Sender: TObject; E: Exception);
    begin
      showmessage('xxxxxxxxxxxxxxxxxxxxxxxxxxxx');
      if Assigned(OriException) then
        OriException(Sender,E);
    end;