我知道如何在delphi中捕获异常(尝试..例外/最终和e.message),但我想知道是否存在可以引发异常的异常处理机制,以及引发异常的例程的名称。举例说明
procedure/function bla();//this can be in a unit/class
begin
code....
an error is raised here -> inside or not of an try-except/finally block
end;我会收到一条消息/对象/任何东西,表明错误'x‘是在'bla’中引发的。
我知道madexcept,还有另一种方法来捕获异常吗?
我使用的是Delphi 7。解决方案可能也适用于其他Delphi版本。
发布于 2010-11-11 01:59:41
您可以使用JclDebug.pas单元中的ProcByLevel函数,该单元是JCL库的一部分。
在使用之前,您必须从Ide菜单的tools->jcl Options激活选项'Insert JDBG data into the binary'。

然后你可以这样使用它
Uses
JclDebug;
procedure TForm18.Button1Click(Sender: TObject);
begin
try
raise Exception.Create('Hello from '+ProcByLevel(0));
except
on e : Exception do
ShowMessage(e.Message);
end;
end;结果是这样的

发布于 2010-11-11 02:36:45
与MadExcept不相上下,EurekaLog也是一个优秀的工具。
发布于 2010-11-11 01:18:30
像MadExcept这样的库将元数据添加到应用程序中,以便它可以将地址映射到单元和函数名称。
Delphi不会自动执行此操作,也不会提供直接执行此操作的方法,它只提供引发异常的地址。
执行您想要的操作的一些替代方法如下:
有了这些,您就可以在发生异常时获得调用堆栈的快照。
https://stackoverflow.com/questions/4146681
复制相似问题