SetUnhandledExceptionFilter

SetUnhandledExceptionFilter

Some resources 似乎表明,与其使用 SetUnhandledExceptionFilter 来捕获未处理的异常,不如使用 AddVectoredExceptionHandler 来通知所有异常。

但是,据我所知,在确定是否或在何处处理异常之前,vectored handler 是“只是”为程序中引发的每个(SEH)异常调用的。

我错过了什么吗?

最佳答案

好评论:



— 汉斯·帕桑特

话虽如此 - 在重新阅读我同意的文档之后 - 我认为“困惑”,如果你愿意的话,在我链接的 original question 中,可能源于最初提出的问题



当然,您可以使用向量异常处理程序,也就是说,您可以通过 VEH 拦截所有 0xC0000005,但是您不知道围绕此的代码是否可以实际捕获并处理它——并且在低级别或者对于特定情况,捕获访问冲突并在捕获站点继续是一种有效的方法。

因此,正如汉斯所说,它充其量只是一种有用的诊断工具。

或者,换句话说,向量异常处理程序 不会捕获异常 ,如果您在 catch __except 在更高级别捕获引发的异常的意义上解释“捕获”异常。

VectoredHandler 只支持 EXCEPTION_CONTINUE_SEARCH :找到一个处理程序和 EXCEPTION_CONTINUE_EXECUTION :我从来没有完全掌握它们的用法。

关于winapi - AddVectoredExceptionHandler 是 SetUnhandledExceptionFilter 的替代品吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28629351/

10-12 00:52