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/