2

MSDN 描述UnhandledExceptionFilter如下:“如果正在调试进程,则将未处理的异常传递给调试器的应用程序定义的函数。”

但是这个函数显然是由操作系统提供的,在 kernel32.dll 根据同一页面。

那么为什么他们称它为应用程序定义的函数呢?

4

2 回答 2

3

是的,很尴尬的语言。它是函数的原型定义。您可以使用 __except 关键字或作为 SetUnhandledExceptionFilter() 的参数。要么让你的“应用程序定义的功能”。

如果您两者都不做,则有默认处理,调试器会在未处理的异常处自动停止。我想这就是他们所说的“将异常传递给调试器”的意思。SEH 的 SDK 文档应该得到一个全面的不及格分数。

于 2010-08-31T17:50:51.420 回答
1

UnhandledExceptionFilter() 本身不是内核提供的它自己的函数(尽管内核确实实现了它自己的默认实现,在你用自己的覆盖它之前一直使用它)。您引用的 UnhandledExceptionFilter() 文档描述了一个函数原型,如果您选择实现自己的函数并将其传递给 SetUnhandledExceptionFilter() 函数以在内核中激活它,则必须遵循该原型。

于 2010-08-31T19:18:22.537 回答