是否可能有一个全局异常钩子? [英] Is it possible to have a global exception hook?
问题描述
有没有办法安装一些正确的全局异常处理程序在所有其他异常处理块之前?我正在寻找记录这些例外的中心位置。
感谢任何建议!
这很重要:它是Delphi 2009)
您可以执行以下操作:
- 保留System.RaiseExceptObjProc变量的值,在正常的Delphi应用程序中指向SysUtils.RaiseExceptObject
- 创建自己的RaiseExceptObjectproc和将它分配给您自己的RaiseExceptObjectproc中的RaiseExceptObjProc变量
- ,然后调用保存的RaiseExceptObjProc值
有关详细信息,请参阅上述变量和过程声明。
my code is fairly well covered with exception handling (try..except). Some exceptions are not expected to happen and some exceptions happen fairly often, which is expected and ok. Now I want to add some automated tests for this code. It would be good to know how many exceptions happened during execution, so I can later see if the expected number was raised or anything unexpected happened. I don't want to clutter every exception handling block with debug code, so my question is:
Is there a way to install some kind of global exception handler which sits right before all other exception handling blocks? I am searching for a central place to log these exceptions.
Thanks for any suggestions!
(And if this matters: it is Delphi 2009)
You can do the following:
- preserve the value of System.RaiseExceptObjProc variable, which in normal Delphi app is pointing to SysUtils.RaiseExceptObject
- create your own "RaiseExceptObject" proc and assign it to the RaiseExceptObjProc variable
- in your own "RaiseExceptObject" proc you can do what you want, then call saved RaiseExceptObjProc value
For details, see above variable and procedure declarations.
这篇关于是否可能有一个全局异常钩子?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!