// See also: http://pastebin.com/9P0PJcyc - "how to ignore particular exception"
// See also: http://pastebin.com/XWpyDuw6 - "how to silently process exception"
// See also: http://pastebin.com/QiicyV2E - "how to log all (handled) exceptions"
// See also: http://pastebin.com/rdNbEwPH - "how to get call stack on demand"
// See also: http://pastebin.com/46QkwZNi - "how to convert call stack to text"
uses
EException
EExceptionManager,
ELogBuilder,
ESysInfo;
// ...
var
EI: TEurekaExceptionInfo;
begin
try
// ...
except
EI := ExceptionManager.LastThreadException;
// or:
EI := ExceptionManager.Info(ExceptObject, ExceptAddr);
// or:
on E: Exception do
EI := ExceptionManager.Info(E);
LogException(EI);
end;
...
procedure LogException(const AEI: TEurekaExceptionInfo);
var
LogBuilder: TBaseLogBuilder;
LogFileName: String;
begin
// Create a generator for log content.
// You may use default class for your application (LogBuilderClass)
// Or a specific class (TLogBuilder, TXMLLogBuilder or your own descendant)
LogBuilder := LogBuilderClass.Create(AEI);
try
// File name to save bug report to.
// You may use AEI.BugIDStr, if you want to save each report into individual file.
LogFileName := ExpandEnvVars(AEI.Options.OutputLogFile(''));
// Generate and save bug report. File will be overwritten.
LogBuilder.SaveToFile(LogFileName);
finally
FreeAndNil(LogBuilder);
end;
end;
// This code will save bug report about exception to the specified file.
// No other features will be invoked (such as dialogs, sending, duplicate/count merging, etc.)
// If you want to process exception (like to get duplicate/count merging feature) - see: http://pastebin.com/XWpyDuw6
Comments
0 B
|👍
/👎
0 B
|👍
/👎