您可能会将此视为一个愚蠢的问题,但我很好奇如何使用APPCRASH错误终止我的delphi制作的应用程序。 (也称为“不发送”错误!!)
Thnx提前
答案 0 :(得分:12)
您可以通过在System中设置全局变量JITEnable来启用此功能。如果将其设置为1,则所有外部异常(即访问冲突,非法指令和任何非Delphi异常)都将触发您想要的反应。如果将其设置为2,任何异常都将触发该行为。在任何一种情况下,只有在不调试应用程序时才会发生这种情况。调试器将始终获得第一次破解,并将通知您即将发生的厄运。这是一个简单的例子:
{$APPTYPE CONSOLE}
uses
SysUtils;
begin
try
JITEnable := 2;
raise Exception.Create('Error Message');
except
on E: Exception do
Writeln(E.ClassName, ': ', E.Message);
end;
end.
答案 1 :(得分:3)
而不是异常处理的变通路径 - 您可以不使用任何:
function Crash(Arg: Integer): Integer; stdcall;
begin
Result := PInteger(nil)^;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
TID: Cardinal;
begin
CloseHandle(CreateThread(nil, 0, @Crash, nil, 0, TID));
end;
Crash
在新线程中执行。此主题没有 ANY 异常处理程序。这种线程中的任何异常对于应用程序都是致命的。