c – 处理QPluginLoader :: load()抛出的异常
发布时间:2020-12-16 07:15:46 所属栏目:百科 来源:网络整理
导读:我有2个Qt插件,main和helper,main.dll加载helper.dll.当main.dll和helper.dll都在同一个文件夹中时,我能够成功加载带有QPluginLoader的main.dll.当helper.dll不存在且我尝试加载main.dll时会抛出异常.这是可以理解的原因无法找到helper.dll.我的任务是成功捕
我有2个Qt插件,main和helper,main.dll加载helper.dll.当main.dll和helper.dll都在同一个文件夹中时,我能够成功加载带有QPluginLoader的main.dll.当helper.dll不存在且我尝试加载main.dll时会抛出异常.这是可以理解的原因无法找到helper.dll.我的任务是成功捕获抛出的异常,而不是崩溃应用程序.这里调试是Qt Creator显示的内容:
以下代码没有解决问题,所以我需要做点其他事情…… std::exception_ptr eptr; QPluginLoader pluginLoader(packagePath); try { pluginLoader.load(); } catch(...) { eptr = std::current_exception(); } 解决方法
我相信在这种情况下你应该使用Windows __try / __except扩展:
__try { // guarded code } __except ( expression ) { // exception handler code } 这种异常会让你抓住SEH错误,你可以在MSDN上找到一篇关于它的详细文章: 此外,这是另一个主题,为了优雅地终止你也可以使用SetUnhandledExceptionFilter. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |