【发布时间】:2012-10-04 12:27:27
【问题描述】:
-
在编写利用 Windows API 函数或某些 Windows DLL(例如 ntdll.dll)的函数的函数/过程/方法时,应该使用哪个 Delphi 异常类来引发最后的 Win32/Win64 错误?
引自 Delphi XE3 文档关于 System.SysUtils.EExternal:
"注意:
EExternal类代表 Win32 异常代码。ExceptionRecord成员指向 Win32 异常记录。" 从那时起,我得出结论,Win32 和 Win64 异常机制之间存在差异。它们之间有什么区别?
出于调试目的——我的意思是关于堆栈帧相关的东西——差异是否会导致每个平台的异常处理的代码实现不同?
【问题讨论】:
-
除了好奇之外,Delphi 中的异常不能很好地与浮点代码混合。例如,一个线程中的外部错误(例如 AV、FP 数学错误)可能会导致 不同线程中的浮点控制字发生变化!去弄清楚那个!更多细节在这里:qc.embarcadero.com/wc/qcmain.aspx?d=107411
标签: delphi freepascal