【发布时间】:2015-07-05 13:54:27
【问题描述】:
我正在为托管/非托管 Winform 应用程序编写一些测试。一些错误发生在非托管部分,并导致进程因未处理的System.Runtime.InteropServices.SEHException 异常而终止。
发生此异常时,Windows 会弹出一个消息框来解释错误。
不幸的是,MS Test 和 White 都没有意识到这一点。测试本身成功完成,没有任何错误迹象,即使我可以看到在测试继续之前弹出消息框并关闭应用程序。
如何检测这种异常?
【问题讨论】:
-
相当模糊,Windows 不显示消息框。建议使用调试器,至少您可以显示堆栈跟踪。
-
我不想调试代码,我想让单元测试找出发生了不好的事情。
-
嗯,如果您不想找出代码有什么问题,那么使用单元测试毫无意义。好吧,测试失败,不应该用消息框报告令人讨厌的异常。反正一直都在发生。写一个错误报告,让程序员自己解决。
-
这就是重点。我希望测试失败,以便以后可以调试代码。不幸的是,测试成功了。测试失败并引发托管异常。未捕获非托管异常,运行 Winforms 应用程序的进程仍处于活动状态,没有迹象表明发生了不好的事情。
-
应用程序不显示消息框。这是标准的“您的应用程序中发生了未处理的异常。如果您单击继续,应用程序将忽略此错误....”。
标签: c++ winforms unmanaged white-framework seh