如何捕获应用程序级别的所有异常,甚至是在不同线程中引发的异常



是否有任何方法可以捕获所有未处理的异常,甚至是在不同的TThread中引发的异常?其思想是将这些异常写入日志文件。

根据评论,匆忙编写一些代码不会让你很快得到任何东西,所以聪明的钱会流向为你提供产品的工作。

为了公平起见,我不会指出我最喜欢的产品,而是提到我遇到的流行产品:

  • madExcept
  • EurekaLog
  • SM Logging Suite**

然后是开源选项:

  • JEDI代码库**,特别是JclDebug和JclHookExcept单元(参见此博客文章)
  • debuggengine **(这更多的是手工练习,我理解-见wiki在这里)
  • mORMot**,特别是这里描述的SynCommons单元

你也可以使用RtlUnwindProc钩子异常,就像在Win32中演示的那样。

然而,据我所知,所有这些选项的主要缺点是它们只针对Windows平台。如果你的目标是移动设备(Android, iOS)或Macintosh,那么你将不得不卷起袖子,确保你将处理程序放入你创建的每个线程中,并熟悉Application.OnException, TThread.FatalException等。

**我个人没有使用过这些产品,所以不知道他们是否在所有线程中拾取异常,但目前假设他们做

最新更新