在非.NET应用程序中抛出SEHException

时间:2009-12-20 22:22:06

标签: .net c++ windows mfc

我正在编写一个不使用.NET的MFC应用程序(在项目设置中将CLR支持设置为 No Common Language Runtime support )。但是,当我在Release版本中退出应用程序时,我收到了SEHException。调试版本给了我一个断言错误,但错误窗口在弹出后大约半秒消失(我之前没有遇到的事情)所以我没有机会看到它。

所以主要问题是:没有任何托管代码的应用程序如何抛出Interop.SEHException?

2 个答案:

答案 0 :(得分:4)

没有托管代码的应用程序可能会抛出SEHException,因为结构化异常处理(SEH)是Win32的一部分,并且早于CLR。这是January 1997 giving a crash course (hah!) on Win32 SEH的链接。

答案 1 :(得分:2)

啊,修好了。问题是我从两个独立的线程中调用了两次退出代码(包括对PostQuitMessage()的调用)。消失的框是由于在抛出异常后很快就调用exit(0)并且程序终止。