加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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显示的内容:

enter image description here

以下代码没有解决问题,所以我需要做点其他事情……

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上找到一篇关于它的详细文章:
https://msdn.microsoft.com/en-us/library/swezty51.aspx

此外,这是另一个主题,为了优雅地终止你也可以使用SetUnhandledExceptionFilter.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读