【发布时间】:2011-06-30 05:36:52
【问题描述】:
首先,C++中是否存在无法捕获的异常?
我见过一个 2005 microsoft kb article 讨论了在一个 DLL 中引发的异常,而这些异常不能在另一个 DLL 中捕获。几年前,这似乎已通过修补程序解决,但我现在可能遇到了这个问题 - 使用 Visual C++ 2008。
具体来说,根据崩溃后的小型转储文件报告,在调用 ::fgetpos 期间,我看到了这个:
kernel32!UnhandledExceptionFilter+0x55b
有两件事突然出现在我的脑海中。首先,我注意到位于与调用 DLL 不同的 DLL 中的指定 catch 块没有捕获异常!!!这是知识库文章描述的重复吗?其次,我想知道 kernel32“未处理的异常”是否是 Visual C++ catch 块无法捕获的东西。我认为使用“包罗万象”的省略号就足够了。
我有什么遗漏吗?
【问题讨论】:
-
抛出的异常是什么?您还在使用 C++ 或 SEH 异常处理程序吗?如果没有异常处理程序处理异常,则 UnhandledExceptionFilter 处理,但异常可能已由代码处理。
标签: c++ exception exception-handling try-catch