这里有一个例子,已经投入实用,希望对你有帮助
  private
    { Private declarations }
    procedure AppException(Sender: TObject; E: Exception);
procedure TfrmCCTVMain.AppException(Sender: TObject; E: Exception);
var
  i:integer;
begin
  //出错日志记录
  SaveErr(Sender,E);
  // 出错信息处理及显示
  E.Message:=E.message+ chr(13) + chr(13) +'软件出现意外错误,即将关闭'+chr(13)+'请重新启动windows,再重试!';
  Application.ShowException(E);
  //应用关闭准备
  for i:=1 to screen.FormCount do
  begin
    if not (screen.forms[screen.FormCount-1].Name=           application.MainForm.Name )    
then screen.forms[screen.FormCount-1].Release ;
  end;
  //关闭应用程序
  Application.Terminate;
end;