大部分时间里,我们不知道哪一步操作会引起异常,而且又不能(也不应该)将所有的代码都装在TRY-EXCEPT块中。
有一种方法通过处理全局Application对象的OnException事件,让Delphi处理所有异常并将它们传递给用户。
我们提供了一个ApplicationEvents组件,可用于编写范例。
unit LogForm;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, AppEvnts;
type
TFormLog = class(TForm)
Button1: TButton;
Button2: TButton;
CheckBoxSilent: TCheckBox;
ApplicationEvents1: TApplicationEvents;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure LogException (Sender: TObject; E: Exception);
end;
var
FormLog: TFormLog;
implementation
{$R *.DFM}
procedure TFormLog.LogException(Sender: TObject; E: Exception);
var
Filename: string;
LogFile: TextFile;
begin
// prepares log file
Filename := ChangeFileExt (App